summaryrefslogtreecommitdiff
path: root/macros/imgSetToList.sci
blob: fcbc37c7510d36f4b7efe2919e8911dc89e43c5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
function imgSetList=imageSetToList(imageSet)
    if isstruct(imageSet)<> %T  then
            error(msprintf("Error: The input argument is not of type imageSet."));
        end
        fieldNamesActual=["Description";"ImageLocation";"Count"];
        fieldNamesInput=fieldnames(imageSet);
        if fieldNamesActual <> fieldNamesInput then
            error(msprintf("Error: The input argument is not of type imageSet, Wrong field names"));
        end
        if size(imageSet) == [1 1] then
            if type(imageSet.Description)<> 10 | size(imageSet.Description) <> [1 1] then
            error(msprintf("Error: The input argument is not of type imageSet, Description field must be string"));
            end
            if type(imageSet.Count)<> 1 | size(imageSet.Count) <> [1 1] then
                error(msprintf("Error: The input argument is not of type imageSet, Count field must be integer"));
            end
            if type(imageSet.ImageLocation)<> 10 & size(imageSet.ImageLocation,'c') <> 1 then
                error(msprintf("Error: The input argument is not of type imageSet, ImageLocation must be strings"));
            end
            locationList=list();
                Desc=imageSet.Description;
                Count=int32(imageSet.Count);
                for j=1:imageSet.Count
                    tempMat(1,j)=imageSet.ImageLocation(j);
                end
                locationList($+1)=tempMat;
        else
            for i=1:size(imageSet.Count)
                if type(imageSet(i).Description)<> 10 | size(imageSet(i).Description) <> [1 1] then
                    error(msprintf("Error: The input argument is not of type imageSet, Description field must be string"));
                end
                if type(imageSet(i).Count)<> 1 | size(imageSet(i).Count) <> [1 1] then
                    error(msprintf("Error: The input argument is not of type imageSet, Count field must be integer"));
                end
                if type(imageSet(i).ImageLocation)<> 10 & size(imageSet(i).ImageLocation,'c') <> 1 then
                    error(msprintf("Error: The input argument is not of type imageSet, ImageLocation must be strings"));
                end
            end
            locationList=list();
            for i=1:size(imageSet.Count)
                Desc(i)=imageSet(i).Description;
                Count(i)=int32(imageSet(i).Count);
                for j=1:imageSet(i).Count
                    tempMat(1,j)=imageSet(i).ImageLocation(j);
                end
                locationList($+1)=tempMat;
            end
        end
        imgSetList=list("imageSet",Desc,Count,locationList);
endfunction