곰픽 채점 기준 수정버전
This commit is contained in:
BIN
00_DPI_2504B_TEST.xlsx
Normal file
BIN
00_DPI_2504B_TEST.xlsx
Normal file
Binary file not shown.
@@ -184,12 +184,7 @@
|
|||||||
"1": {
|
"1": {
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[not(@Length<='5' and @ClipLength='-1')]/@ClipIndex",
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[not(@Length<='5' and @ClipLength='-1')]/@ClipIndex",
|
||||||
"type": "mediaOrder",
|
"type": "mediaOrder",
|
||||||
"value": [
|
"value": ["동영상.mp4", "이미지3.jpg", "이미지1.jpg", "이미지2.jpg"],
|
||||||
"동영상.mp4",
|
|
||||||
"이미지3.jpg",
|
|
||||||
"이미지1.jpg",
|
|
||||||
"이미지2.jpg"
|
|
||||||
],
|
|
||||||
"point": 4,
|
"point": 4,
|
||||||
"desc": "비디오1 트랙에 있는 클립의 ClipIndex값을 기준으로 CRClipArr에서 Path값을 가져와서 정답 채점, 클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다."
|
"desc": "비디오1 트랙에 있는 클립의 ClipIndex값을 기준으로 CRClipArr에서 Path값을 가져와서 정답 채점, 클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다."
|
||||||
},
|
},
|
||||||
@@ -258,10 +253,7 @@
|
|||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
|
||||||
"search": "화단의 꽃들",
|
"search": "화단의 꽃들",
|
||||||
"type": "video.Location",
|
"type": "video.Location",
|
||||||
"value": [
|
"value": ["0.38333333", "0.92962962"],
|
||||||
"0.38333333",
|
|
||||||
"0.92962962"
|
|
||||||
],
|
|
||||||
"point": 2,
|
"point": 2,
|
||||||
"desc": "정답 파일의 자막 좌표를 기준으로 프로그램 내부적으로 0.1까지 오차를 허용한다"
|
"desc": "정답 파일의 자막 좌표를 기준으로 프로그램 내부적으로 0.1까지 오차를 허용한다"
|
||||||
},
|
},
|
||||||
@@ -303,7 +295,8 @@
|
|||||||
"ID": "67",
|
"ID": "67",
|
||||||
"VID102": "40"
|
"VID102": "40"
|
||||||
},
|
},
|
||||||
"point": 2
|
"point": 2,
|
||||||
|
"desc": "오버레이 속성 키값(VID10X) 확인하고 변경"
|
||||||
},
|
},
|
||||||
"15": {
|
"15": {
|
||||||
"ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']",
|
"ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']",
|
||||||
@@ -321,7 +314,7 @@
|
|||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length",
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length",
|
||||||
"type": "imageLength",
|
"type": "imageLength",
|
||||||
"media": "이미지1.jpg",
|
"media": "이미지1.jpg",
|
||||||
"value": "150",
|
"value": "180",
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"17": {
|
"17": {
|
||||||
@@ -329,18 +322,19 @@
|
|||||||
"type": "imageOverlay",
|
"type": "imageOverlay",
|
||||||
"media": "이미지1.jpg",
|
"media": "이미지1.jpg",
|
||||||
"value": {
|
"value": {
|
||||||
"ID": "184",
|
"ID": "103",
|
||||||
"VID102": "30"
|
"VID102": "7"
|
||||||
},
|
},
|
||||||
"point": 2
|
"point": 2,
|
||||||
|
"desc": "오버레이 속성 키값(VID10X) 확인하고 변경"
|
||||||
},
|
},
|
||||||
"18": {
|
"18": {
|
||||||
"ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']",
|
"ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']",
|
||||||
"type": "clipTransition",
|
"type": "clipTransition",
|
||||||
"media": "이미지1.jpg",
|
"media": "이미지1.jpg",
|
||||||
"value": {
|
"value": {
|
||||||
"ID": "19",
|
"ID": "12",
|
||||||
"Range": "650:680",
|
"Range": "670:730",
|
||||||
"Type": "2"
|
"Type": "2"
|
||||||
},
|
},
|
||||||
"point": 2,
|
"point": 2,
|
||||||
@@ -350,7 +344,7 @@
|
|||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length",
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length",
|
||||||
"type": "imageLength",
|
"type": "imageLength",
|
||||||
"media": "이미지2.jpg",
|
"media": "이미지2.jpg",
|
||||||
"value": "180",
|
"value": "150",
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"20": {
|
"20": {
|
||||||
@@ -358,18 +352,19 @@
|
|||||||
"type": "imageOverlay",
|
"type": "imageOverlay",
|
||||||
"media": "이미지2.jpg",
|
"media": "이미지2.jpg",
|
||||||
"value": {
|
"value": {
|
||||||
"ID": "67",
|
"ID": "102",
|
||||||
"VID102": "30"
|
"VID101": "3"
|
||||||
},
|
},
|
||||||
"point": 2
|
"point": 2,
|
||||||
|
"desc": "오버레이 속성 키값(VID10X) 확인하고 변경"
|
||||||
},
|
},
|
||||||
"21": {
|
"21": {
|
||||||
"ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']",
|
"ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']",
|
||||||
"type": "clipTransition",
|
"type": "clipTransition",
|
||||||
"media": "이미지2.jpg",
|
"media": "이미지2.jpg",
|
||||||
"value": {
|
"value": {
|
||||||
"ID": "10",
|
"ID": "0",
|
||||||
"Range": "800:860",
|
"Range": "850:880",
|
||||||
"Type": "2"
|
"Type": "2"
|
||||||
},
|
},
|
||||||
"point": 2,
|
"point": 2,
|
||||||
@@ -400,7 +395,7 @@
|
|||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
|
||||||
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
"type": "video.Text.Color",
|
"type": "video.Text.Color",
|
||||||
"value": "fd5721",
|
"value": "ec008c",
|
||||||
"point": 2,
|
"point": 2,
|
||||||
"desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)"
|
"desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)"
|
||||||
},
|
},
|
||||||
@@ -409,7 +404,7 @@
|
|||||||
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
"type": "video.Text.Outline",
|
"type": "video.Text.Outline",
|
||||||
"value": {
|
"value": {
|
||||||
"width": "30",
|
"width": "40",
|
||||||
"color": "fff9c4"
|
"color": "fff9c4"
|
||||||
},
|
},
|
||||||
"point": 2,
|
"point": 2,
|
||||||
@@ -420,14 +415,14 @@
|
|||||||
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
"type": "opening.Text.FadeInEffect",
|
"type": "opening.Text.FadeInEffect",
|
||||||
"value": {
|
"value": {
|
||||||
"ID": "4",
|
"ID": "14",
|
||||||
"PlayTime": "2"
|
"PlayTime": "2"
|
||||||
},
|
},
|
||||||
"point": 3,
|
"point": 3,
|
||||||
"desc": "오프닝자막의 나타나기 효과를 확인하는 문항. id속성은 VID505, playtime속성은 VID507으로 XML 내부에 표기되어 있다."
|
"desc": "오프닝자막의 나타나기 효과를 확인하는 문항. id속성은 VID505, playtime속성은 VID507으로 XML 내부에 표기되어 있다."
|
||||||
},
|
},
|
||||||
"28": {
|
"28": {
|
||||||
"ele": "{search}",
|
"ele": "",
|
||||||
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
"type": "opening.StartTime",
|
"type": "opening.StartTime",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
@@ -435,7 +430,7 @@
|
|||||||
"desc": "오프닝자막의 시작시간 value 속성만 수정"
|
"desc": "오프닝자막의 시작시간 value 속성만 수정"
|
||||||
},
|
},
|
||||||
"29": {
|
"29": {
|
||||||
"ele": "{search}",
|
"ele": "",
|
||||||
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
"type": "opening.Length",
|
"type": "opening.Length",
|
||||||
"value": 120,
|
"value": 120,
|
||||||
@@ -452,7 +447,7 @@
|
|||||||
"ele": "//CRTrackList[@Name='오디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']",
|
"ele": "//CRTrackList[@Name='오디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']",
|
||||||
"type": "audio.EndTime",
|
"type": "audio.EndTime",
|
||||||
"media": "음악.mp3",
|
"media": "음악.mp3",
|
||||||
"value": 810,
|
"value": "870",
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"32": {
|
"32": {
|
||||||
@@ -461,7 +456,7 @@
|
|||||||
"media": "음악.mp3",
|
"media": "음악.mp3",
|
||||||
"value": {
|
"value": {
|
||||||
"ID": "1",
|
"ID": "1",
|
||||||
"PlayTime": "90"
|
"PlayTime": "60"
|
||||||
},
|
},
|
||||||
"point": 2,
|
"point": 2,
|
||||||
"desc": "ID속성-페이드인:0 / 페이드아웃: 1"
|
"desc": "ID속성-페이드인:0 / 페이드아웃: 1"
|
||||||
@@ -476,10 +471,7 @@
|
|||||||
"1": {
|
"1": {
|
||||||
"type": "canvas.Size",
|
"type": "canvas.Size",
|
||||||
"ele": "//Document/Width/@value | //Document/Height/@value",
|
"ele": "//Document/Width/@value | //Document/Height/@value",
|
||||||
"value": [
|
"value": ["650", "350"],
|
||||||
"650",
|
|
||||||
"350"
|
|
||||||
],
|
|
||||||
"point": 5,
|
"point": 5,
|
||||||
"desc": "캔버스 사이즈 650*350"
|
"desc": "캔버스 사이즈 650*350"
|
||||||
},
|
},
|
||||||
@@ -490,7 +482,7 @@
|
|||||||
"desc": "자유 변형 문항은 채점 불가"
|
"desc": "자유 변형 문항은 채점 불가"
|
||||||
},
|
},
|
||||||
"3": {
|
"3": {
|
||||||
"type": "layer.Exists",
|
"type": "layer.exists",
|
||||||
"ele": "//Layer/Name/@value",
|
"ele": "//Layer/Name/@value",
|
||||||
"value": "Flower",
|
"value": "Flower",
|
||||||
"point": 5,
|
"point": 5,
|
||||||
@@ -501,14 +493,21 @@
|
|||||||
"ele": "//Layer[Name[@value='{search}']]/Effects/Item",
|
"ele": "//Layer[Name[@value='{search}']]/Effects/Item",
|
||||||
"search": "Flower",
|
"search": "Flower",
|
||||||
"value": {
|
"value": {
|
||||||
"name": "세피아",
|
"name": "생동감",
|
||||||
"option": {
|
"option": {
|
||||||
"U": "75",
|
"생동감": "40"
|
||||||
"V": "150"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"point": 5,
|
"point": 5,
|
||||||
"desc": "Flower 레이어의 효과 체크"
|
"desc": {
|
||||||
|
"흑백": "강도",
|
||||||
|
"밝기/대비": ["밝기", "대비"],
|
||||||
|
"노출": "노출",
|
||||||
|
"색조/채도": ["색조", "채도", "명도"],
|
||||||
|
"감마":["리프트","감마","게인"],
|
||||||
|
"세피아":["U","V"],
|
||||||
|
"생동감": "생동감"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"5": {
|
"5": {
|
||||||
"type": "none",
|
"type": "none",
|
||||||
@@ -573,10 +572,7 @@
|
|||||||
"1": {
|
"1": {
|
||||||
"type": "canvas.Size",
|
"type": "canvas.Size",
|
||||||
"ele": "//Document/Width/@value | //Document/Height/@value",
|
"ele": "//Document/Width/@value | //Document/Height/@value",
|
||||||
"value": [
|
"value": ["650", "450"],
|
||||||
"650",
|
|
||||||
"450"
|
|
||||||
],
|
|
||||||
"point": 5,
|
"point": 5,
|
||||||
"desc": "캔버스 사이즈 650*450"
|
"desc": "캔버스 사이즈 650*450"
|
||||||
},
|
},
|
||||||
@@ -627,7 +623,7 @@
|
|||||||
"point": 6
|
"point": 6
|
||||||
},
|
},
|
||||||
"8": {
|
"8": {
|
||||||
"type": "exists",
|
"type": "text.exists",
|
||||||
"ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
|
"ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
|
||||||
"value": "흰 꽃 사이 노란 꽃",
|
"value": "흰 꽃 사이 노란 꽃",
|
||||||
"point": 5
|
"point": 5
|
||||||
@@ -714,13 +710,6 @@
|
|||||||
"20": {
|
"20": {
|
||||||
"type": "shadow",
|
"type": "shadow",
|
||||||
"ele": "//Layer//Shape[shape_type/@value='{option}']",
|
"ele": "//Layer//Shape[shape_type/@value='{option}']",
|
||||||
"ele2": {
|
|
||||||
"shadow": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]",
|
|
||||||
"width": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
|
|
||||||
"distance": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
|
|
||||||
"blur": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
|
|
||||||
"angle": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
|
|
||||||
},
|
|
||||||
"option": "RECTANGLE",
|
"option": "RECTANGLE",
|
||||||
"value": {
|
"value": {
|
||||||
"shadow": true,
|
"shadow": true,
|
||||||
|
|||||||
@@ -187,12 +187,7 @@
|
|||||||
"1": {
|
"1": {
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[not(@Length<='5' and @ClipLength='-1')]/@ClipIndex",
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[not(@Length<='5' and @ClipLength='-1')]/@ClipIndex",
|
||||||
"type": "mediaOrder",
|
"type": "mediaOrder",
|
||||||
"value": [
|
"value": ["동영상.mp4", "이미지3.jpg", "이미지1.jpg", "이미지2.jpg"],
|
||||||
"동영상.mp4",
|
|
||||||
"이미지3.jpg",
|
|
||||||
"이미지1.jpg",
|
|
||||||
"이미지2.jpg"
|
|
||||||
],
|
|
||||||
"point": 4,
|
"point": 4,
|
||||||
"desc": "비디오1 트랙에 있는 클립의 ClipIndex값을 기준으로 CRClipArr에서 Path값을 가져와서 정답 채점, 클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다."
|
"desc": "비디오1 트랙에 있는 클립의 ClipIndex값을 기준으로 CRClipArr에서 Path값을 가져와서 정답 채점, 클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다."
|
||||||
},
|
},
|
||||||
@@ -266,10 +261,7 @@
|
|||||||
"ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
|
"ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']",
|
||||||
"type": "video",
|
"type": "video",
|
||||||
"search": "모래 촉감 놀이",
|
"search": "모래 촉감 놀이",
|
||||||
"value": [
|
"value": [0.35312501, 0.92962962],
|
||||||
0.35312501,
|
|
||||||
0.92962962
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
@@ -305,21 +297,14 @@
|
|||||||
"type": "multi",
|
"type": "multi",
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='{image}']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='{image}']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='{image}']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='{image}']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']",
|
||||||
"image": "이미지3.jpg",
|
"image": "이미지3.jpg",
|
||||||
"value": [
|
"value": ["184", "5"],
|
||||||
"184",
|
|
||||||
"5"
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"15": {
|
"15": {
|
||||||
"type": "multi",
|
"type": "multi",
|
||||||
"ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='{image}']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='{image}']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
|
"ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='{image}']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='{image}']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
|
||||||
"image": "이미지3.jpg",
|
"image": "이미지3.jpg",
|
||||||
"value": [
|
"value": ["21", "480:540", "2"],
|
||||||
"21",
|
|
||||||
"480:540",
|
|
||||||
"2"
|
|
||||||
],
|
|
||||||
"point": 2,
|
"point": 2,
|
||||||
"desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
|
"desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
|
||||||
},
|
},
|
||||||
@@ -335,21 +320,14 @@
|
|||||||
"type": "multi",
|
"type": "multi",
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='{image}']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='{image}']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID100']",
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='{image}']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='{image}']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID100']",
|
||||||
"image": "이미지1.jpg",
|
"image": "이미지1.jpg",
|
||||||
"value": [
|
"value": ["102", "6"],
|
||||||
"102",
|
|
||||||
"6"
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"18": {
|
"18": {
|
||||||
"type": "multi",
|
"type": "multi",
|
||||||
"ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='{image}']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='{image}']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
|
"ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='{image}']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='{image}']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
|
||||||
"image": "이미지1.jpg",
|
"image": "이미지1.jpg",
|
||||||
"value": [
|
"value": ["9", "690:720", "2"],
|
||||||
"9",
|
|
||||||
"690:720",
|
|
||||||
"2"
|
|
||||||
],
|
|
||||||
"point": 2,
|
"point": 2,
|
||||||
"desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
|
"desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
|
||||||
},
|
},
|
||||||
@@ -365,21 +343,14 @@
|
|||||||
"type": "multi",
|
"type": "multi",
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='{image}']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='{image}']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID103']",
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='{image}']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='{image}']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID103']",
|
||||||
"image": "이미지2.jpg",
|
"image": "이미지2.jpg",
|
||||||
"value": [
|
"value": ["67", "7"],
|
||||||
"67",
|
|
||||||
"7"
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"21": {
|
"21": {
|
||||||
"type": "multi",
|
"type": "multi",
|
||||||
"ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='{image}']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='{image}']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
|
"ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='{image}']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='{image}']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']",
|
||||||
"image": "이미지2.jpg",
|
"image": "이미지2.jpg",
|
||||||
"value": [
|
"value": ["94", "840:870", "2"],
|
||||||
"94",
|
|
||||||
"840:870",
|
|
||||||
"2"
|
|
||||||
],
|
|
||||||
"point": 2,
|
"point": 2,
|
||||||
"desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
|
"desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다."
|
||||||
},
|
},
|
||||||
@@ -420,10 +391,7 @@
|
|||||||
"ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
|
"ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']",
|
||||||
"search": "자연 놀이터 (Nature Playground)",
|
"search": "자연 놀이터 (Nature Playground)",
|
||||||
"type": "opening",
|
"type": "opening",
|
||||||
"value": [
|
"value": ["0.30000001", "-13107457"],
|
||||||
"0.30000001",
|
|
||||||
"-13107457"
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"27": {
|
"27": {
|
||||||
@@ -431,10 +399,7 @@
|
|||||||
"ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']",
|
"ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']",
|
||||||
"search": "자연 놀이터 (Nature Playground)",
|
"search": "자연 놀이터 (Nature Playground)",
|
||||||
"type": "opening",
|
"type": "opening",
|
||||||
"value": [
|
"value": ["14", "2"],
|
||||||
"14",
|
|
||||||
"2"
|
|
||||||
],
|
|
||||||
"point": 3
|
"point": 3
|
||||||
},
|
},
|
||||||
"28": {
|
"28": {
|
||||||
@@ -475,10 +440,7 @@
|
|||||||
"1": {
|
"1": {
|
||||||
"type": "multi",
|
"type": "multi",
|
||||||
"ele": "//Document/Width/@value | //Document/Height/@value",
|
"ele": "//Document/Width/@value | //Document/Height/@value",
|
||||||
"value": [
|
"value": ["650", "350"],
|
||||||
"650",
|
|
||||||
"350"
|
|
||||||
],
|
|
||||||
"point": 5,
|
"point": 5,
|
||||||
"desc": "캔버스 사이즈 650*350"
|
"desc": "캔버스 사이즈 650*350"
|
||||||
},
|
},
|
||||||
@@ -499,10 +461,7 @@
|
|||||||
"ele": "//Layer[Name[@value='{layer}']]/Effects/Item[EffectData/{option}]/Name/@value | //Layer[Name[@value='{layer}']]/Effects/Item/EffectData/{option}/@value",
|
"ele": "//Layer[Name[@value='{layer}']]/Effects/Item[EffectData/{option}]/Name/@value | //Layer[Name[@value='{layer}']]/Effects/Item/EffectData/{option}/@value",
|
||||||
"layer": "Flower",
|
"layer": "Flower",
|
||||||
"option": "VibranceValue",
|
"option": "VibranceValue",
|
||||||
"value": [
|
"value": ["39", "생동감"],
|
||||||
"39",
|
|
||||||
"생동감"
|
|
||||||
],
|
|
||||||
"point": 5,
|
"point": 5,
|
||||||
"desc": "Flower 레이어의 효과 체크"
|
"desc": "Flower 레이어의 효과 체크"
|
||||||
},
|
},
|
||||||
@@ -545,10 +504,7 @@
|
|||||||
"10": {
|
"10": {
|
||||||
"type": "multiValue",
|
"type": "multiValue",
|
||||||
"ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
|
"ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
|
||||||
"value": [
|
"value": ["반사", "80"],
|
||||||
"반사",
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"point": 6,
|
"point": 6,
|
||||||
"desc": "혼합모드(색 회피율, 불투명도 : 80)"
|
"desc": "혼합모드(색 회피율, 불투명도 : 80)"
|
||||||
},
|
},
|
||||||
@@ -567,10 +523,7 @@
|
|||||||
"1": {
|
"1": {
|
||||||
"type": "multi",
|
"type": "multi",
|
||||||
"ele": "//Document/Width/@value | //Document/Height/@value",
|
"ele": "//Document/Width/@value | //Document/Height/@value",
|
||||||
"value": [
|
"value": ["650", "450"],
|
||||||
"650",
|
|
||||||
"450"
|
|
||||||
],
|
|
||||||
"point": 5,
|
"point": 5,
|
||||||
"desc": "캔버스 사이즈 650*450"
|
"desc": "캔버스 사이즈 650*450"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,729 +0,0 @@
|
|||||||
{
|
|
||||||
"0": {
|
|
||||||
"1": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"2": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"3": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"4": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"5": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"6": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"7": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"8": {
|
|
||||||
"ele": "$[?(@.width == 65 && @.height == 45)]",
|
|
||||||
"type": "size",
|
|
||||||
"value": {
|
|
||||||
"width": 65,
|
|
||||||
"height": 45
|
|
||||||
},
|
|
||||||
"point": 4
|
|
||||||
},
|
|
||||||
"9": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0,
|
|
||||||
"desc": "파일명 확인"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"1": {
|
|
||||||
"1": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"2": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"3": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"4": {
|
|
||||||
"ele": "$.children[?(@.name=='한옥')].name",
|
|
||||||
"value": "한옥",
|
|
||||||
"point": 4
|
|
||||||
},
|
|
||||||
"5": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"6": {
|
|
||||||
"ele": "$.children[?(@.name=='Traditional Park')].name",
|
|
||||||
"value": "Traditional Park",
|
|
||||||
"point": 4
|
|
||||||
},
|
|
||||||
"7": {
|
|
||||||
"ele": "$.children[?(@.name=='Traditional Park')].text.font.names[0]",
|
|
||||||
"type": "font",
|
|
||||||
"value": "Arial",
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"8": {
|
|
||||||
"ele": "$.children[?(@.name=='Traditional Park')].text.font.names[0]",
|
|
||||||
"value": "Arial-BoldItalicMT",
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"9": {
|
|
||||||
"ele": "$.children[?(@.name=='Traditional Park')].text.font.sizes[0]",
|
|
||||||
"value": 48,
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"10": {
|
|
||||||
"ele": "$.children[?(@.name=='Traditional Park')].text.font.colors[0]",
|
|
||||||
"type": "color",
|
|
||||||
"value": "017e86",
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"11": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"12": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"13": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"14": {
|
|
||||||
"ele": "$.children[?(@.name=='전통 문화 공원')].name",
|
|
||||||
"value": "전통 문화 공원",
|
|
||||||
"point": 4
|
|
||||||
},
|
|
||||||
"15": {
|
|
||||||
"ele": "$.children[?(@.name=='전통 문화 공원')].text.font.names[0]",
|
|
||||||
"type": "font",
|
|
||||||
"value": "GungsuhChe",
|
|
||||||
"point": 2,
|
|
||||||
"desc": {
|
|
||||||
"돋움체": "DotumChe",
|
|
||||||
"궁서체": "GungsuhChe",
|
|
||||||
"굴림체": "GulimChe",
|
|
||||||
"휴먼옛체": "YetR"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"16": {
|
|
||||||
"ele": "$.children[?(@.name=='전통 문화 공원')].text.font.sizes[0]",
|
|
||||||
"value": 36,
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"17": {
|
|
||||||
"ele": "$.children[?(@.name=='전통 문화 공원')].text.font.colors[0]",
|
|
||||||
"type": "color",
|
|
||||||
"value": "ffeeca",
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"18": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"19": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"20": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"21": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"22": {
|
|
||||||
"ele": "$.children[?(@.name=='맷돌')].name",
|
|
||||||
"value": "맷돌",
|
|
||||||
"point": 4
|
|
||||||
},
|
|
||||||
"23": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"24": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"25": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0
|
|
||||||
},
|
|
||||||
"26": {
|
|
||||||
"ele": "$[?(@.width == 65 && @.height == 35)]",
|
|
||||||
"type": "size",
|
|
||||||
"value": {
|
|
||||||
"width": 65,
|
|
||||||
"height": 35
|
|
||||||
},
|
|
||||||
"point": 5
|
|
||||||
},
|
|
||||||
"27": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0,
|
|
||||||
"desc": "파일명 확인"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2": {
|
|
||||||
"1": {
|
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[not(@Length<='5' and @ClipLength='-1')]/@ClipIndex",
|
|
||||||
"type": "mediaOrder",
|
|
||||||
"value": [
|
|
||||||
"동영상.mp4",
|
|
||||||
"이미지2.jpg",
|
|
||||||
"이미지3.jpg",
|
|
||||||
"이미지1.jpg"
|
|
||||||
],
|
|
||||||
"point": 4,
|
|
||||||
"desc": "비디오1 트랙에 있는 클립의 ClipIndex값을 기준으로 CRClipArr에서 Path값을 가져와서 정답 채점, 클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다."
|
|
||||||
},
|
|
||||||
"2": {
|
|
||||||
"ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1]/@Speed",
|
|
||||||
"type": "oneAnswer",
|
|
||||||
"value": {
|
|
||||||
"speed": "120"
|
|
||||||
},
|
|
||||||
"point": 2,
|
|
||||||
"desc": "100당 1배속 / 130 = 1.3배속"
|
|
||||||
},
|
|
||||||
"3": {
|
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']",
|
|
||||||
"type": "startEnd",
|
|
||||||
"media": "동영상.mp4",
|
|
||||||
"value": {
|
|
||||||
"start": "0",
|
|
||||||
"end": "380"
|
|
||||||
},
|
|
||||||
"point": 2,
|
|
||||||
"desc": "시작시간과 재생시간 정답값 입력, 3번문항은 '동영상.mp4' 클립의 길이를 확인하는 문항이므로 media는 수정할 필요가 없다."
|
|
||||||
},
|
|
||||||
"4": {
|
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter",
|
|
||||||
"type": "effect",
|
|
||||||
"media": "동영상.mp4",
|
|
||||||
"value": {
|
|
||||||
"ID": "70",
|
|
||||||
"VID100": "30",
|
|
||||||
"VID101": "20"
|
|
||||||
},
|
|
||||||
"point": 3,
|
|
||||||
"desc": "value값의 키값(VID___)은 이펙트의 속성종류에 따라 변경되므로 채점기준표작성시 확인 필요"
|
|
||||||
},
|
|
||||||
"5": {
|
|
||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name",
|
|
||||||
"search": "청량하고 시원한 폭포",
|
|
||||||
"type": "video.Text",
|
|
||||||
"value": "청량하고 시원한 폭포",
|
|
||||||
"point": 3
|
|
||||||
},
|
|
||||||
"6": {
|
|
||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
|
|
||||||
"search": "청량하고 시원한 폭포",
|
|
||||||
"type": "video.Text",
|
|
||||||
"value": "돋움체",
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"7": {
|
|
||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
|
|
||||||
"search": "청량하고 시원한 폭포",
|
|
||||||
"type": "video.Text",
|
|
||||||
"value": "120",
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"8": {
|
|
||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
|
|
||||||
"search": "청량하고 시원한 폭포",
|
|
||||||
"type": "video.Text.Color",
|
|
||||||
"value": "1db0f1",
|
|
||||||
"point": 2,
|
|
||||||
"desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)"
|
|
||||||
},
|
|
||||||
"9": {
|
|
||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
|
|
||||||
"search": "청량하고 시원한 폭포",
|
|
||||||
"type": "video.Location",
|
|
||||||
"value": [
|
|
||||||
"0.27395833",
|
|
||||||
"0.9222222"
|
|
||||||
],
|
|
||||||
"point": 2,
|
|
||||||
"desc": "정답 파일의 자막 좌표를 기준으로 프로그램 내부적으로 0.1까지 오차를 허용한다"
|
|
||||||
},
|
|
||||||
"10": {
|
|
||||||
"ele": "",
|
|
||||||
"search": "청량하고 시원한 폭포",
|
|
||||||
"type": "video.StartTime",
|
|
||||||
"value": 170,
|
|
||||||
"point": 2,
|
|
||||||
"desc": "내부적으로 자막의 시작시간과 길이를 계산"
|
|
||||||
},
|
|
||||||
"11": {
|
|
||||||
"ele": "",
|
|
||||||
"search": "청량하고 시원한 폭포",
|
|
||||||
"type": "video.Length",
|
|
||||||
"value": 150,
|
|
||||||
"point": 2,
|
|
||||||
"desc": "내부적으로 자막의 시작시간과 길이를 계산"
|
|
||||||
},
|
|
||||||
"12": {
|
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Mute",
|
|
||||||
"type": "Mute",
|
|
||||||
"media": "동영상.mp4",
|
|
||||||
"value": "1",
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"13": {
|
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length",
|
|
||||||
"type": "imageLength",
|
|
||||||
"media": "이미지2.jpg",
|
|
||||||
"value": "150",
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"14": {
|
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter",
|
|
||||||
"type": "imageOverlay",
|
|
||||||
"media": "이미지2.jpg",
|
|
||||||
"value": {
|
|
||||||
"ID": "103",
|
|
||||||
"VID102": "7"
|
|
||||||
},
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"15": {
|
|
||||||
"ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']",
|
|
||||||
"type": "clipTransition",
|
|
||||||
"media": "이미지2.jpg",
|
|
||||||
"value": {
|
|
||||||
"ID": "11",
|
|
||||||
"Range": "500:530",
|
|
||||||
"Type": "2"
|
|
||||||
},
|
|
||||||
"point": 2,
|
|
||||||
"desc": "오버랩일 경우 Type속성값 16으로 변경"
|
|
||||||
},
|
|
||||||
"16": {
|
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length",
|
|
||||||
"type": "imageLength",
|
|
||||||
"media": "이미지3.jpg",
|
|
||||||
"value": "150",
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"17": {
|
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter",
|
|
||||||
"type": "imageOverlay",
|
|
||||||
"media": "이미지3.jpg",
|
|
||||||
"value": {
|
|
||||||
"ID": "184",
|
|
||||||
"VID102": "30"
|
|
||||||
},
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"18": {
|
|
||||||
"ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']",
|
|
||||||
"type": "clipTransition",
|
|
||||||
"media": "이미지3.jpg",
|
|
||||||
"value": {
|
|
||||||
"ID": "19",
|
|
||||||
"Range": "650:680",
|
|
||||||
"Type": "2"
|
|
||||||
},
|
|
||||||
"point": 2,
|
|
||||||
"desc": "오버랩일 경우 Type속성값 16으로 변경"
|
|
||||||
},
|
|
||||||
"19": {
|
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length",
|
|
||||||
"type": "imageLength",
|
|
||||||
"media": "이미지1.jpg",
|
|
||||||
"value": "180",
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"20": {
|
|
||||||
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter",
|
|
||||||
"type": "imageOverlay",
|
|
||||||
"media": "이미지1.jpg",
|
|
||||||
"value": {
|
|
||||||
"ID": "67",
|
|
||||||
"VID102": "30"
|
|
||||||
},
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"21": {
|
|
||||||
"ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']",
|
|
||||||
"type": "clipTransition",
|
|
||||||
"media": "이미지1.jpg",
|
|
||||||
"value": {
|
|
||||||
"ID": "10",
|
|
||||||
"Range": "800:860",
|
|
||||||
"Type": "2"
|
|
||||||
},
|
|
||||||
"point": 2,
|
|
||||||
"desc": "오버랩일 경우 Type속성값 16으로 변경"
|
|
||||||
},
|
|
||||||
"22": {
|
|
||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name",
|
|
||||||
"search": "전통 공원 (Traditional Park)",
|
|
||||||
"type": "video.Text",
|
|
||||||
"value": "전통 공원 (Traditional Park)",
|
|
||||||
"point": 3
|
|
||||||
},
|
|
||||||
"23": {
|
|
||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
|
|
||||||
"search": "전통 공원 (Traditional Park)",
|
|
||||||
"type": "video.Text",
|
|
||||||
"value": "궁서체",
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"24": {
|
|
||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
|
|
||||||
"search": "전통 공원 (Traditional Park)",
|
|
||||||
"type": "video.Text",
|
|
||||||
"value": "140",
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"25": {
|
|
||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
|
|
||||||
"search": "전통 공원 (Traditional Park)",
|
|
||||||
"type": "video.Text.Color",
|
|
||||||
"value": "fd5721",
|
|
||||||
"point": 2,
|
|
||||||
"desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)"
|
|
||||||
},
|
|
||||||
"26": {
|
|
||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']",
|
|
||||||
"search": "전통 공원 (Traditional Park)",
|
|
||||||
"type": "video.Text.Outline",
|
|
||||||
"value": {
|
|
||||||
"width": "30",
|
|
||||||
"color": "fff9c4"
|
|
||||||
},
|
|
||||||
"point": 2,
|
|
||||||
"desc": "두께는 XML에서는 소수점으로 표기되지만, 프로그램 내부적으로 변환하여 사용하므로 현재 파일에서는 정수로 작성"
|
|
||||||
},
|
|
||||||
"27": {
|
|
||||||
"ele": "//CROwneUnit[{index}]/CRCUnitArr",
|
|
||||||
"search": "전통 공원 (Traditional Park)",
|
|
||||||
"type": "opening.Text.FadeInEffect",
|
|
||||||
"value": {
|
|
||||||
"ID": "4",
|
|
||||||
"PlayTime": "2"
|
|
||||||
},
|
|
||||||
"point": 3,
|
|
||||||
"desc": "오프닝자막의 나타나기 효과를 확인하는 문항. id속성은 VID505, playtime속성은 VID507으로 XML 내부에 표기되어 있다."
|
|
||||||
},
|
|
||||||
"28": {
|
|
||||||
"ele": "",
|
|
||||||
"search": "전통 공원 (Traditional Park)",
|
|
||||||
"type": "opening.StartTime",
|
|
||||||
"value": 0,
|
|
||||||
"point": 2,
|
|
||||||
"desc": "오프닝자막의 시작시간 value 속성만 수정"
|
|
||||||
},
|
|
||||||
"29": {
|
|
||||||
"ele": "",
|
|
||||||
"search": "전통 공원 (Traditional Park)",
|
|
||||||
"type": "opening.Length",
|
|
||||||
"value": 120,
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"30": {
|
|
||||||
"ele": "",
|
|
||||||
"type": "audio.StartTime",
|
|
||||||
"media": "음악.mp3",
|
|
||||||
"value": 0,
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"31": {
|
|
||||||
"ele": "//CRTrackList[@Name='오디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']",
|
|
||||||
"type": "audio.EndTime",
|
|
||||||
"media": "음악.mp3",
|
|
||||||
"value": 810,
|
|
||||||
"point": 2
|
|
||||||
},
|
|
||||||
"32": {
|
|
||||||
"ele": "//CRTrackList[@Name='오디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter",
|
|
||||||
"type": "audio.Effect",
|
|
||||||
"media": "음악.mp3",
|
|
||||||
"value": {
|
|
||||||
"ID": "1",
|
|
||||||
"PlayTime": "90"
|
|
||||||
},
|
|
||||||
"point": 2,
|
|
||||||
"desc": "ID속성-페이드인:0 / 페이드아웃:1"
|
|
||||||
},
|
|
||||||
"33": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0,
|
|
||||||
"desc": "파일명 확인"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"4": {
|
|
||||||
"1": {
|
|
||||||
"type": "multi",
|
|
||||||
"ele": "//Document/Width/@value | //Document/Height/@value",
|
|
||||||
"value": [
|
|
||||||
"650",
|
|
||||||
"350"
|
|
||||||
],
|
|
||||||
"point": 5,
|
|
||||||
"desc": "캔버스 사이즈 650*350"
|
|
||||||
},
|
|
||||||
"2": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 5,
|
|
||||||
"desc": "자유 변형 문항은 채점 불가"
|
|
||||||
},
|
|
||||||
"3": {
|
|
||||||
"type": "isExist",
|
|
||||||
"ele": "//Layer/Name/@value",
|
|
||||||
"value": "Flower",
|
|
||||||
"point": 5,
|
|
||||||
"desc": "Flower 레이어가 있는지 여부 체크"
|
|
||||||
},
|
|
||||||
"4": {
|
|
||||||
"type": "multiValue",
|
|
||||||
"ele": "//Layer[Name[@value='{layer}']]/Effects/Item[EffectData/{option}]/Name/@value | //Layer[Name[@value='{layer}']]/Effects/Item/EffectData/{option}/@value",
|
|
||||||
"layer": "Flower",
|
|
||||||
"option": "VibranceValue",
|
|
||||||
"value": [
|
|
||||||
"39",
|
|
||||||
"생동감"
|
|
||||||
],
|
|
||||||
"point": 5,
|
|
||||||
"desc": "Flower 레이어의 효과 체크"
|
|
||||||
},
|
|
||||||
"5": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 6,
|
|
||||||
"desc": "올가미 도구/이미지 문항은 채점 불가"
|
|
||||||
},
|
|
||||||
"6": {
|
|
||||||
"type": "exists",
|
|
||||||
"ele": "//Layer/Effects/Item/Name/@value",
|
|
||||||
"value": "세피아",
|
|
||||||
"point": 6,
|
|
||||||
"desc": "세피아 효과가 있는지 여부 체크"
|
|
||||||
},
|
|
||||||
"7": {
|
|
||||||
"type": "exact",
|
|
||||||
"ele": "//Layer/Shapes/Shape/shape_type/@value",
|
|
||||||
"value": "ELLIPSE",
|
|
||||||
"point": 3,
|
|
||||||
"desc": "레이어 쉐이프 타입이 타원인지 체크"
|
|
||||||
},
|
|
||||||
"8": {
|
|
||||||
"type": "size",
|
|
||||||
"ele": "//Layer//op_points",
|
|
||||||
"value": {
|
|
||||||
"width": 120,
|
|
||||||
"height": 120
|
|
||||||
},
|
|
||||||
"point": 3,
|
|
||||||
"desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
|
|
||||||
},
|
|
||||||
"9": {
|
|
||||||
"type": "color",
|
|
||||||
"ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value",
|
|
||||||
"value": "7097bb",
|
|
||||||
"point": 6,
|
|
||||||
"desc": "색상 코드 비교 시 소문자로 입력할 것"
|
|
||||||
},
|
|
||||||
"10": {
|
|
||||||
"type": "multiValue",
|
|
||||||
"ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value",
|
|
||||||
"value": [
|
|
||||||
"반사",
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"point": 6,
|
|
||||||
"desc": "혼합모드(색 회피율, 불투명도 : 80)"
|
|
||||||
},
|
|
||||||
"11": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0,
|
|
||||||
"desc": "기본설정"
|
|
||||||
},
|
|
||||||
"12": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0,
|
|
||||||
"desc": "파일명 확인"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"5": {
|
|
||||||
"1": {
|
|
||||||
"type": "multi",
|
|
||||||
"ele": "//Document/Width/@value | //Document/Height/@value",
|
|
||||||
"value": [
|
|
||||||
"650",
|
|
||||||
"450"
|
|
||||||
],
|
|
||||||
"point": 5,
|
|
||||||
"desc": "캔버스 사이즈 650*450"
|
|
||||||
},
|
|
||||||
"2": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 5,
|
|
||||||
"desc": "배경색 문항은 채점 불가"
|
|
||||||
},
|
|
||||||
"3": {
|
|
||||||
"type": "exists",
|
|
||||||
"ele": "//Layer/MaskOpType/@value",
|
|
||||||
"value": "Layering",
|
|
||||||
"point": 6
|
|
||||||
},
|
|
||||||
"4": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 6,
|
|
||||||
"desc": "가로방향 흐릿하게 문항은 채점 불가"
|
|
||||||
},
|
|
||||||
"5": {
|
|
||||||
"type": "exists",
|
|
||||||
"ele": "//Layer//shape_type/@value",
|
|
||||||
"value": "ROUNDED_RECTANGLE",
|
|
||||||
"point": 3
|
|
||||||
},
|
|
||||||
"6": {
|
|
||||||
"type": "size",
|
|
||||||
"ele": "//Layer//op_points",
|
|
||||||
"value": {
|
|
||||||
"width": 400,
|
|
||||||
"height": 60
|
|
||||||
},
|
|
||||||
"point": 3,
|
|
||||||
"desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
|
|
||||||
},
|
|
||||||
"7": {
|
|
||||||
"type": "gradient",
|
|
||||||
"ele": "//Layer/Shapes/Shape",
|
|
||||||
"startColor": "gradient_start_color/@value",
|
|
||||||
"endColor": "gradient_end_color/@value",
|
|
||||||
"value": {
|
|
||||||
"startColor": "ffe000",
|
|
||||||
"endColor": "34a159"
|
|
||||||
},
|
|
||||||
"point": 6
|
|
||||||
},
|
|
||||||
"8": {
|
|
||||||
"type": "exists",
|
|
||||||
"ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
|
|
||||||
"value": "흰 꽃 사이 노란 꽃",
|
|
||||||
"point": 5
|
|
||||||
},
|
|
||||||
"9": {
|
|
||||||
"type": "exists",
|
|
||||||
"ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
|
|
||||||
"value": "맑은 고딕",
|
|
||||||
"point": 3
|
|
||||||
},
|
|
||||||
"10": {
|
|
||||||
"type": "exists",
|
|
||||||
"ele": "//Layer//Shape[shape_type/@value='TEXT']/font/{style}/@value",
|
|
||||||
"style": "Italic",
|
|
||||||
"value": "True",
|
|
||||||
"point": 3
|
|
||||||
},
|
|
||||||
"11": {
|
|
||||||
"type": "exists",
|
|
||||||
"ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
|
|
||||||
"value": "30",
|
|
||||||
"point": 3
|
|
||||||
},
|
|
||||||
"12": {
|
|
||||||
"type": "color",
|
|
||||||
"ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
|
|
||||||
"value": "b46ef8",
|
|
||||||
"point": 3,
|
|
||||||
"desc": "색상 코드 비교 시 소문자로 입력할 것"
|
|
||||||
},
|
|
||||||
"13": {
|
|
||||||
"type": "exists",
|
|
||||||
"ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
|
|
||||||
"value": "7",
|
|
||||||
"point": 3
|
|
||||||
},
|
|
||||||
"14": {
|
|
||||||
"type": "color",
|
|
||||||
"ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
|
|
||||||
"value": "ffffff",
|
|
||||||
"point": 3,
|
|
||||||
"desc": "색상 코드 비교 시 소문자로 입력할 것"
|
|
||||||
},
|
|
||||||
"15": {
|
|
||||||
"ele": "//Layer[MaskOpType/@value='Clipping'][last()]",
|
|
||||||
"point": 6,
|
|
||||||
"desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함"
|
|
||||||
},
|
|
||||||
"16": {
|
|
||||||
"type": "exists",
|
|
||||||
"ele": "//Layer/Shapes/Shape/shape_type/@value",
|
|
||||||
"value": "RECTANGLE",
|
|
||||||
"point": 3
|
|
||||||
},
|
|
||||||
"17": {
|
|
||||||
"type": "size",
|
|
||||||
"ele": "//Layer//op_points",
|
|
||||||
"value": {
|
|
||||||
"width": 150,
|
|
||||||
"height": 150
|
|
||||||
},
|
|
||||||
"point": 3,
|
|
||||||
"desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
|
|
||||||
},
|
|
||||||
"18": {
|
|
||||||
"type": "exists",
|
|
||||||
"ele": "//Layer//outline_peninfo/Width/@value",
|
|
||||||
"value": "7",
|
|
||||||
"point": 3
|
|
||||||
},
|
|
||||||
"19": {
|
|
||||||
"type": "color",
|
|
||||||
"ele": "//Layer//Shape[contains(draw_type/@value, 'Outline')]/primary_color/@value",
|
|
||||||
"value": "e8e88e",
|
|
||||||
"point": 3,
|
|
||||||
"desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)"
|
|
||||||
},
|
|
||||||
"20": {
|
|
||||||
"type": "shadow",
|
|
||||||
"ele": {
|
|
||||||
"shadow": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]",
|
|
||||||
"width": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_width/@value",
|
|
||||||
"distance": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_distance/@value",
|
|
||||||
"blur": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_blur/@value",
|
|
||||||
"angle": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_angle/@value"
|
|
||||||
},
|
|
||||||
"value": {
|
|
||||||
"width": "3",
|
|
||||||
"distance": "5",
|
|
||||||
"blur": "1",
|
|
||||||
"angle": "320"
|
|
||||||
},
|
|
||||||
"point": 5,
|
|
||||||
"desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점"
|
|
||||||
},
|
|
||||||
"21": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0,
|
|
||||||
"desc": "기본설정"
|
|
||||||
},
|
|
||||||
"22": {
|
|
||||||
"ele": "none",
|
|
||||||
"point": 0,
|
|
||||||
"desc": "파일명 확인"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -501,7 +501,7 @@
|
|||||||
"layer": "Flower",
|
"layer": "Flower",
|
||||||
"option": "VibranceValue",
|
"option": "VibranceValue",
|
||||||
"value": [
|
"value": [
|
||||||
"39",
|
"40",
|
||||||
"생동감"
|
"생동감"
|
||||||
],
|
],
|
||||||
"point": 5,
|
"point": 5,
|
||||||
|
|||||||
737
DIC_곰픽채점기준표.json
Normal file
737
DIC_곰픽채점기준표.json
Normal file
@@ -0,0 +1,737 @@
|
|||||||
|
{
|
||||||
|
"0": {
|
||||||
|
"1": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"ele": "$[?(@.width == 65 && @.height == 45)]",
|
||||||
|
"type": "size",
|
||||||
|
"value": {
|
||||||
|
"width": 65,
|
||||||
|
"height": 45
|
||||||
|
},
|
||||||
|
"point": 4
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0,
|
||||||
|
"desc": "파일명 확인"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"1": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"ele": "$.children[?(@.name=='꽃잎들')].name",
|
||||||
|
"value": "꽃잎들",
|
||||||
|
"point": 4
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"ele": "$.children[?(@.name=='Flower Rock')].name",
|
||||||
|
"value": "Flower Rock",
|
||||||
|
"point": 4
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"ele": "$.children[?(@.name=='Flower Rock')].text.font.names[0]",
|
||||||
|
"type": "font",
|
||||||
|
"value": "Arial",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"ele": "$.children[?(@.name=='Flower Rock')].text.font.names[0]",
|
||||||
|
"value": "Arial-BoldItalicMT",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"ele": "$.children[?(@.name=='Flower Rock')].text.font.sizes[0]",
|
||||||
|
"value": 48,
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"ele": "$.children[?(@.name=='Flower Rock')].text.font.colors[0]",
|
||||||
|
"type": "color",
|
||||||
|
"value": "d6f592",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"ele": "$.children[?(@.name=='꽃과 바위')].name",
|
||||||
|
"value": "꽃과 바위",
|
||||||
|
"point": 4
|
||||||
|
},
|
||||||
|
"15": {
|
||||||
|
"ele": "$.children[?(@.name=='꽃과 바위')].text.font.names[0]",
|
||||||
|
"type": "font",
|
||||||
|
"value": "GungsuhChe",
|
||||||
|
"point": 2,
|
||||||
|
"desc": {
|
||||||
|
"돋움체": "DotumChe",
|
||||||
|
"궁서체": "GungsuhChe",
|
||||||
|
"굴림체": "GulimChe",
|
||||||
|
"휴먼옛체": "YetR"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"ele": "$.children[?(@.name=='꽃과 바위')].text.font.sizes[0]",
|
||||||
|
"value": 36,
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"ele": "$.children[?(@.name=='꽃과 바위')].text.font.colors[0]",
|
||||||
|
"type": "color",
|
||||||
|
"value": "0d17d5",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"ele": "$.children[?(@.name=='노랑꽃')].name",
|
||||||
|
"value": "노랑꽃",
|
||||||
|
"point": 4
|
||||||
|
},
|
||||||
|
"23": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"24": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"25": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"26": {
|
||||||
|
"ele": "$[?(@.width == 65 && @.height == 35)]",
|
||||||
|
"type": "size",
|
||||||
|
"value": {
|
||||||
|
"width": 65,
|
||||||
|
"height": 35
|
||||||
|
},
|
||||||
|
"point": 5
|
||||||
|
},
|
||||||
|
"27": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0,
|
||||||
|
"desc": "파일명 확인"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"1": {
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[not(@Length<='5' and @ClipLength='-1')]/@ClipIndex",
|
||||||
|
"type": "mediaOrder",
|
||||||
|
"value": ["동영상.mp4", "이미지3.jpg", "이미지1.jpg", "이미지2.jpg"],
|
||||||
|
"point": 4,
|
||||||
|
"desc": "비디오1 트랙에 있는 클립의 ClipIndex값을 기준으로 CRClipArr에서 Path값을 가져와서 정답 채점, 클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다."
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1]/@Speed",
|
||||||
|
"type": "oneAnswer",
|
||||||
|
"value": {
|
||||||
|
"speed": "140"
|
||||||
|
},
|
||||||
|
"point": 2,
|
||||||
|
"desc": "100당 1배속 / 130 = 1.3배속"
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']",
|
||||||
|
"type": "startEnd",
|
||||||
|
"media": "동영상.mp4",
|
||||||
|
"value": {
|
||||||
|
"start": "0",
|
||||||
|
"end": "370"
|
||||||
|
},
|
||||||
|
"point": 2,
|
||||||
|
"desc": "시작시간과 재생시간 정답값 입력, 3번문항은 '동영상.mp4' 클립의 길이를 확인하는 문항이므로 media는 수정할 필요가 없다."
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter",
|
||||||
|
"type": "effect",
|
||||||
|
"media": "동영상.mp4",
|
||||||
|
"value": {
|
||||||
|
"ID": "44",
|
||||||
|
"VID100": "8",
|
||||||
|
"VID103": "0.89999998"
|
||||||
|
},
|
||||||
|
"point": 3,
|
||||||
|
"desc": "value값의 키값(VID___)은 이펙트의 속성종류에 따라 변경되므로 채점기준표작성시 확인 필요"
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name",
|
||||||
|
"search": "화단의 꽃들",
|
||||||
|
"type": "video.Text",
|
||||||
|
"value": "화단의 꽃들",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
|
||||||
|
"search": "화단의 꽃들",
|
||||||
|
"type": "video.Text",
|
||||||
|
"value": "돋움체",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
|
||||||
|
"search": "화단의 꽃들",
|
||||||
|
"type": "video.Text",
|
||||||
|
"value": "110",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
|
||||||
|
"search": "화단의 꽃들",
|
||||||
|
"type": "video.Text.Color",
|
||||||
|
"value": "ff531b",
|
||||||
|
"point": 2,
|
||||||
|
"desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)"
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']",
|
||||||
|
"search": "화단의 꽃들",
|
||||||
|
"type": "video.Location",
|
||||||
|
"value": ["0.38333333", "0.92962962"],
|
||||||
|
"point": 2,
|
||||||
|
"desc": "정답 파일의 자막 좌표를 기준으로 프로그램 내부적으로 0.1까지 오차를 허용한다"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"ele": "",
|
||||||
|
"search": "화단의 꽃들",
|
||||||
|
"type": "video.StartTime",
|
||||||
|
"value": 170,
|
||||||
|
"point": 2,
|
||||||
|
"desc": "내부적으로 자막의 시작시간과 길이를 계산"
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"ele": "",
|
||||||
|
"search": "화단의 꽃들",
|
||||||
|
"type": "video.Length",
|
||||||
|
"value": 150,
|
||||||
|
"point": 2,
|
||||||
|
"desc": "내부적으로 자막의 시작시간과 길이를 계산"
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Mute",
|
||||||
|
"type": "Mute",
|
||||||
|
"media": "동영상.mp4",
|
||||||
|
"value": "1",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length",
|
||||||
|
"type": "imageLength",
|
||||||
|
"media": "이미지3.jpg",
|
||||||
|
"value": "180",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter",
|
||||||
|
"type": "imageOverlay",
|
||||||
|
"media": "이미지3.jpg",
|
||||||
|
"value": {
|
||||||
|
"ID": "67",
|
||||||
|
"VID102": "40"
|
||||||
|
},
|
||||||
|
"point": 2,
|
||||||
|
"desc": "오버레이 속성 키값(VID10X) 확인하고 변경"
|
||||||
|
},
|
||||||
|
"15": {
|
||||||
|
"ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']",
|
||||||
|
"type": "clipTransition",
|
||||||
|
"media": "이미지3.jpg",
|
||||||
|
"value": {
|
||||||
|
"ID": "10",
|
||||||
|
"Range": "490:550",
|
||||||
|
"Type": "2"
|
||||||
|
},
|
||||||
|
"point": 2,
|
||||||
|
"desc": "오버랩일 경우 Type속성값 16으로 변경"
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length",
|
||||||
|
"type": "imageLength",
|
||||||
|
"media": "이미지1.jpg",
|
||||||
|
"value": "180",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter",
|
||||||
|
"type": "imageOverlay",
|
||||||
|
"media": "이미지1.jpg",
|
||||||
|
"value": {
|
||||||
|
"ID": "103",
|
||||||
|
"VID102": "7"
|
||||||
|
},
|
||||||
|
"point": 2,
|
||||||
|
"desc": "오버레이 속성 키값(VID10X) 확인하고 변경"
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']",
|
||||||
|
"type": "clipTransition",
|
||||||
|
"media": "이미지1.jpg",
|
||||||
|
"value": {
|
||||||
|
"ID": "12",
|
||||||
|
"Range": "670:730",
|
||||||
|
"Type": "2"
|
||||||
|
},
|
||||||
|
"point": 2,
|
||||||
|
"desc": "오버랩일 경우 Type속성값 16으로 변경"
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length",
|
||||||
|
"type": "imageLength",
|
||||||
|
"media": "이미지2.jpg",
|
||||||
|
"value": "150",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter",
|
||||||
|
"type": "imageOverlay",
|
||||||
|
"media": "이미지2.jpg",
|
||||||
|
"value": {
|
||||||
|
"ID": "102",
|
||||||
|
"VID101": "3"
|
||||||
|
},
|
||||||
|
"point": 2,
|
||||||
|
"desc": "오버레이 속성 키값(VID10X) 확인하고 변경"
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']",
|
||||||
|
"type": "clipTransition",
|
||||||
|
"media": "이미지2.jpg",
|
||||||
|
"value": {
|
||||||
|
"ID": "0",
|
||||||
|
"Range": "850:880",
|
||||||
|
"Type": "2"
|
||||||
|
},
|
||||||
|
"point": 2,
|
||||||
|
"desc": "오버랩일 경우 Type속성값 16으로 변경"
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name",
|
||||||
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
|
"type": "video.Text",
|
||||||
|
"value": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"23": {
|
||||||
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
|
||||||
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
|
"type": "video.Text",
|
||||||
|
"value": "궁서체",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"24": {
|
||||||
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
|
||||||
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
|
"type": "video.Text",
|
||||||
|
"value": "140",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"25": {
|
||||||
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
|
||||||
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
|
"type": "video.Text.Color",
|
||||||
|
"value": "ec008c",
|
||||||
|
"point": 2,
|
||||||
|
"desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)"
|
||||||
|
},
|
||||||
|
"26": {
|
||||||
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']",
|
||||||
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
|
"type": "video.Text.Outline",
|
||||||
|
"value": {
|
||||||
|
"width": "40",
|
||||||
|
"color": "fff9c4"
|
||||||
|
},
|
||||||
|
"point": 2,
|
||||||
|
"desc": "두께는 XML에서는 소수점으로 표기되지만, 프로그램 내부적으로 변환하여 사용하므로 현재 파일에서는 정수로 작성"
|
||||||
|
},
|
||||||
|
"27": {
|
||||||
|
"ele": "//CROwneUnit[{index}]/CRCUnitArr",
|
||||||
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
|
"type": "opening.Text.FadeInEffect",
|
||||||
|
"value": {
|
||||||
|
"ID": "14",
|
||||||
|
"PlayTime": "2"
|
||||||
|
},
|
||||||
|
"point": 3,
|
||||||
|
"desc": "오프닝자막의 나타나기 효과를 확인하는 문항. id속성은 VID505, playtime속성은 VID507으로 XML 내부에 표기되어 있다."
|
||||||
|
},
|
||||||
|
"28": {
|
||||||
|
"ele": "",
|
||||||
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
|
"type": "opening.StartTime",
|
||||||
|
"value": 0,
|
||||||
|
"point": 2,
|
||||||
|
"desc": "오프닝자막의 시작시간 value 속성만 수정"
|
||||||
|
},
|
||||||
|
"29": {
|
||||||
|
"ele": "",
|
||||||
|
"search": "아름다운 꽃 축제 (Happy Flower Festival)",
|
||||||
|
"type": "opening.Length",
|
||||||
|
"value": 120,
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"30": {
|
||||||
|
"ele": "",
|
||||||
|
"type": "audio.StartTime",
|
||||||
|
"media": "음악.mp3",
|
||||||
|
"value": 0,
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"31": {
|
||||||
|
"ele": "//CRTrackList[@Name='오디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']",
|
||||||
|
"type": "audio.EndTime",
|
||||||
|
"media": "음악.mp3",
|
||||||
|
"value": "870",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"32": {
|
||||||
|
"ele": "//CRTrackList[@Name='오디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter",
|
||||||
|
"type": "audio.Effect",
|
||||||
|
"media": "음악.mp3",
|
||||||
|
"value": {
|
||||||
|
"ID": "1",
|
||||||
|
"PlayTime": "60"
|
||||||
|
},
|
||||||
|
"point": 2,
|
||||||
|
"desc": "ID속성-페이드인:0 / 페이드아웃: 1"
|
||||||
|
},
|
||||||
|
"33": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0,
|
||||||
|
"desc": "파일명 확인"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"1": {
|
||||||
|
"type": "canvas.Size",
|
||||||
|
"ele": "//Document/Width/@value | //Document/Height/@value",
|
||||||
|
"value": ["650", "350"],
|
||||||
|
"point": 5,
|
||||||
|
"desc": "캔버스 사이즈 650*350"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"type": "none",
|
||||||
|
"ele": "",
|
||||||
|
"point": 5,
|
||||||
|
"desc": "자유 변형 문항은 채점 불가"
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"type": "layer.exists",
|
||||||
|
"ele": "//Layer/Name/@value",
|
||||||
|
"value": "Flower",
|
||||||
|
"point": 5,
|
||||||
|
"desc": "Flower 레이어가 있는지 여부 체크"
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"type": "layer.Effects",
|
||||||
|
"ele": "//Layer[Name[@value='{search}']]/Effects/Item",
|
||||||
|
"search": "Flower",
|
||||||
|
"value": {
|
||||||
|
"name": "생동감",
|
||||||
|
"option": {
|
||||||
|
"생동감": "40"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"point": 5,
|
||||||
|
"desc": {
|
||||||
|
"흑백": "강도",
|
||||||
|
"밝기/대비": ["밝기", "대비"],
|
||||||
|
"노출": "노출",
|
||||||
|
"색조/채도": ["색조", "채도", "명도"],
|
||||||
|
"감마":["리프트","감마","게인"],
|
||||||
|
"세피아":["U","V"],
|
||||||
|
"생동감": "생동감"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"type": "none",
|
||||||
|
"ele": "",
|
||||||
|
"point": 6,
|
||||||
|
"desc": "올가미 도구/이미지 문항은 채점 불가"
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"type": "exists",
|
||||||
|
"ele": "//Layer/Effects/Item/Name/@value",
|
||||||
|
"value": "세피아",
|
||||||
|
"point": 6,
|
||||||
|
"desc": "세피아 효과가 있는지 여부 체크"
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"type": "exists",
|
||||||
|
"ele": "//Layer/Shapes/Shape/shape_type/@value",
|
||||||
|
"value": "ELLIPSE",
|
||||||
|
"point": 3,
|
||||||
|
"desc": "레이어 쉐이프 타입이 타원인지 체크"
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"type": "shape.size",
|
||||||
|
"ele": "//Layer//op_points",
|
||||||
|
"value": {
|
||||||
|
"width": 120,
|
||||||
|
"height": 120
|
||||||
|
},
|
||||||
|
"point": 3,
|
||||||
|
"desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"type": "shape.color",
|
||||||
|
"ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value",
|
||||||
|
"value": "7097BB",
|
||||||
|
"point": 6,
|
||||||
|
"desc": ""
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"type": "layer.blend.opacity",
|
||||||
|
"ele": "//Layer",
|
||||||
|
"value": {
|
||||||
|
"BlendOp": "반사",
|
||||||
|
"Opacity": "80"
|
||||||
|
},
|
||||||
|
"point": 6
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"type": "none",
|
||||||
|
"ele": "",
|
||||||
|
"point": 0,
|
||||||
|
"desc": "기본설정"
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"type": "none",
|
||||||
|
"ele": "",
|
||||||
|
"point": 0,
|
||||||
|
"desc": "파일명 확인"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"1": {
|
||||||
|
"type": "canvas.Size",
|
||||||
|
"ele": "//Document/Width/@value | //Document/Height/@value",
|
||||||
|
"value": ["650", "450"],
|
||||||
|
"point": 5,
|
||||||
|
"desc": "캔버스 사이즈 650*450"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"type": "none",
|
||||||
|
"ele": "",
|
||||||
|
"point": 5,
|
||||||
|
"desc": "배경색 문항은 채점 불가"
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"type": "exists",
|
||||||
|
"ele": "//Layer/MaskOpType/@value",
|
||||||
|
"value": "Layering",
|
||||||
|
"point": 6,
|
||||||
|
"desc": "레이어 마스크 설정 확인"
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"type": "none",
|
||||||
|
"ele": "",
|
||||||
|
"point": 6,
|
||||||
|
"desc": "가로방향 흐릿하게 문항은 채점 불가"
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"type": "exists",
|
||||||
|
"ele": "//Layer//shape_type/@value",
|
||||||
|
"value": "ROUNDED_RECTANGLE",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"type": "shape.size",
|
||||||
|
"ele": "//Layer//op_points",
|
||||||
|
"value": {
|
||||||
|
"width": 400,
|
||||||
|
"height": 60
|
||||||
|
},
|
||||||
|
"point": 3,
|
||||||
|
"desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"type": "gradient.color",
|
||||||
|
"ele": "//Layer/Shapes/Shape",
|
||||||
|
"startColor": "gradient_start_color/@value",
|
||||||
|
"endColor": "gradient_end_color/@value",
|
||||||
|
"value": {
|
||||||
|
"startColor": "ffe000",
|
||||||
|
"endColor": "34A159"
|
||||||
|
},
|
||||||
|
"point": 6
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"type": "text.exists",
|
||||||
|
"ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value",
|
||||||
|
"value": "흰 꽃 사이 노란 꽃",
|
||||||
|
"point": 5
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"type": "exists",
|
||||||
|
"ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value",
|
||||||
|
"value": "맑은 고딕",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"type": "exists",
|
||||||
|
"ele": "//Layer//Shape[shape_type/@value='TEXT']/font/{style}/@value",
|
||||||
|
"style": "Italic",
|
||||||
|
"value": "True",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"type": "exists",
|
||||||
|
"ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value",
|
||||||
|
"value": "30",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"type": "text.color",
|
||||||
|
"ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value",
|
||||||
|
"value": "b46Ef8",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"type": "exists",
|
||||||
|
"ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value",
|
||||||
|
"value": "7",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"type": "text.color",
|
||||||
|
"ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value",
|
||||||
|
"value": "ffffff",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"15": {
|
||||||
|
"type": "exists",
|
||||||
|
"ele": "//Layer/MaskOpType/@value",
|
||||||
|
"value": "Clipping",
|
||||||
|
"point": 6,
|
||||||
|
"desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함"
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"type": "exists",
|
||||||
|
"ele": "//Layer/Shapes/Shape/shape_type/@value",
|
||||||
|
"value": "RECTANGLE",
|
||||||
|
"point": 3,
|
||||||
|
"desc": {
|
||||||
|
"사각형": "RECTANGLE"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"type": "clipping.size",
|
||||||
|
"ele": "//Layer//Shape[shape_type/@value='{option}']//op_points",
|
||||||
|
"option": "RECTANGLE",
|
||||||
|
"value": {
|
||||||
|
"width": 150,
|
||||||
|
"height": 150
|
||||||
|
},
|
||||||
|
"point": 3,
|
||||||
|
"desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점"
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"type": "exists",
|
||||||
|
"ele": "//Layer//Shape[shape_type/@value='{option}']/outline_peninfo/Width/@value",
|
||||||
|
"option": "RECTANGLE",
|
||||||
|
"value": "7",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"type": "clipping.color",
|
||||||
|
"ele": "//Layer//Shape[shape_type/@value='{option}' and contains(draw_type/@value, 'Outline')]/primary_color/@value",
|
||||||
|
"option": "RECTANGLE",
|
||||||
|
"value": "e8e88e",
|
||||||
|
"point": 3,
|
||||||
|
"desc": "채우기:secondary_color, 외곽선:primary_color"
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"type": "shadow",
|
||||||
|
"ele": "//Layer//Shape[shape_type/@value='{option}']",
|
||||||
|
"option": "RECTANGLE",
|
||||||
|
"value": {
|
||||||
|
"shadow": true,
|
||||||
|
"width": "3",
|
||||||
|
"distance": "5",
|
||||||
|
"blur": "1",
|
||||||
|
"angle": "320"
|
||||||
|
},
|
||||||
|
"point": 5,
|
||||||
|
"desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점"
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"type": "none",
|
||||||
|
"ele": "",
|
||||||
|
"point": 0,
|
||||||
|
"desc": "기본설정"
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"type": "none",
|
||||||
|
"ele": "",
|
||||||
|
"point": 0,
|
||||||
|
"desc": "파일명 확인"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -192,38 +192,26 @@ function getGpdpScore(gpdpData, scoringJson, index) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// []
|
// []
|
||||||
else if (type === "layer.Exists") {
|
// else if (type === "layer.exists") {
|
||||||
const layerNameList = xpath.select(ele, gpdpXmlDoc);
|
// const layerNameList = xpath.select(ele, gpdpXmlDoc);
|
||||||
const layerNames = layerNameList.map(layer => layer.value);
|
// const layerNames = layerNameList.map(layer => layer.value);
|
||||||
let isMatched = false
|
// let isMatched = false
|
||||||
|
|
||||||
// for (const layerName of layerNames) {
|
// let result = findSimilarString(gpdpXmlDoc, rightAnswer, 0.8);
|
||||||
// if (layerName.trim().toLowerCase() === rightAnswer.trim().toLowerCase()) {
|
// if (result !== null) {
|
||||||
// userAnswer = layerName;
|
// userAnswer = result;
|
||||||
// isMatched = true;
|
// isMatched = true;
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// if (isMatched) {
|
// if (isMatched) {
|
||||||
|
// totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult, {
|
||||||
|
// type: 'force-correct'
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
// totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult);
|
// totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult);
|
||||||
// }
|
// }
|
||||||
|
// }
|
||||||
let result = findSimilarString(gpdpXmlDoc, rightAnswer, 0.8);
|
|
||||||
if (result !== null) {
|
|
||||||
userAnswer = result;
|
|
||||||
isMatched = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isMatched) {
|
|
||||||
totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult, {
|
|
||||||
type: 'force-correct'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// [1-4] 사진1 > 조정
|
// [1-4] 사진1 > 조정
|
||||||
else if (type === "layer.Effects") {
|
else if (type === "layer.Effects") {
|
||||||
@@ -328,25 +316,42 @@ function getGpdpScore(gpdpData, scoringJson, index) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
else if (type === "exists") {
|
// else if (type === "exists") {
|
||||||
|
else if (type.includes("exists")) {
|
||||||
const existsValues = xpath.select(ele, gpdpXmlDoc);
|
const existsValues = xpath.select(ele, gpdpXmlDoc);
|
||||||
let isMatched = false;
|
let isMatched = false;
|
||||||
|
|
||||||
for (const v of existsValues) {
|
for (const v of existsValues) {
|
||||||
// 하나라도 일치하면 정답
|
|
||||||
if (v.value === rightAnswer) {
|
|
||||||
userAnswer = v.value;
|
userAnswer = v.value;
|
||||||
|
|
||||||
|
if (type.includes('layer') || type.includes('text')) {
|
||||||
|
|
||||||
|
// 공백, 대소문자 무시
|
||||||
|
const cleanUserAnswer = userAnswer.replace(/\s+/g, '').toLowerCase();
|
||||||
|
const cleanRightAnswer = rightAnswer.replace(/\s+/g, '').toLowerCase();
|
||||||
|
|
||||||
|
// 하나라도 일치하면 정답
|
||||||
|
if (cleanUserAnswer === cleanRightAnswer) {
|
||||||
isMatched = true;
|
isMatched = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if (isMatched) {
|
else {
|
||||||
|
if (userAnswer === rightAnswer) {
|
||||||
|
isMatched = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isMatched) {
|
||||||
|
totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult, {
|
||||||
|
type: 'force-correct'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult);
|
||||||
|
}
|
||||||
|
|
||||||
// }
|
|
||||||
// else {
|
|
||||||
|
|
||||||
// }
|
|
||||||
totalScore = compareAndScore(userAnswer, rightAnswer, point, key, scoringResult);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -378,7 +383,7 @@ function getGpdpScore(gpdpData, scoringJson, index) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
totalScore = compareAndScore(userAnswer, rightAnswer, point, key, scoringResult);
|
totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,8 +422,8 @@ function getGpdpScore(gpdpData, scoringJson, index) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// else if (type.includes('shape') || type.includes('text') || type.includes('clipping')) {
|
// else {
|
||||||
else {
|
else if (type.includes('shape') || type.includes('text') || type.includes('clipping')) {
|
||||||
const color = parseColorToHex(item.value);
|
const color = parseColorToHex(item.value);
|
||||||
userAnswer = color;
|
userAnswer = color;
|
||||||
normalizedAnswer = rightAnswer.toLowerCase?.();
|
normalizedAnswer = rightAnswer.toLowerCase?.();
|
||||||
@@ -430,7 +435,7 @@ function getGpdpScore(gpdpData, scoringJson, index) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
totalScore = compareAndScore(userAnswer, normalizedAnswer, point, key, scoringResult);
|
totalScore += compareAndScore(userAnswer, normalizedAnswer, point, key, scoringResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (type === 'layer.blend.opacity') {
|
else if (type === 'layer.blend.opacity') {
|
||||||
@@ -453,7 +458,7 @@ function getGpdpScore(gpdpData, scoringJson, index) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
totalScore = compareAndScore(userAnswer, rightAnswer, point, key, scoringResult);
|
totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -494,8 +499,8 @@ function getGpdpScore(gpdpData, scoringJson, index) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log("🚀 ~ userAnswer:", userAnswer);
|
// console.log("🚀 ~ userAnswer:", userAnswer);
|
||||||
console.log("🚀 ~ rightAnswer : ", rightAnswer)
|
// console.log("🚀 ~ rightAnswer : ", rightAnswer)
|
||||||
totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult, {
|
totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult, {
|
||||||
partial: true
|
partial: true
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ const examTypes = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
// testMode가 true일 경우 TEST 폴더에 있는 답안 파일을 읽어옴
|
// testMode가 true일 경우 TEST 폴더에 있는 답안 파일을 읽어옴
|
||||||
const testMode = false;
|
// const testMode = false;
|
||||||
// const testMode = true;
|
const testMode = true;
|
||||||
|
|
||||||
const outputExcelFiles = [];
|
const outputExcelFiles = [];
|
||||||
|
|
||||||
@@ -459,7 +459,7 @@ function getGmepScore(gmepData, scoringJson, index) {
|
|||||||
// 만약 CRClip 요소가 motion clip인 경우 CRCUnitArr의 Path를 찾기
|
// 만약 CRClip 요소가 motion clip인 경우 CRCUnitArr의 Path를 찾기
|
||||||
if (mediaPath == null) {
|
if (mediaPath == null) {
|
||||||
const motionClipPath = xpath.select1(`//CRClipArr/CRClip[${CRClipIndex}]/CRCUnitArr/@Path`, gmepXmlDoc);
|
const motionClipPath = xpath.select1(`//CRClipArr/CRClip[${CRClipIndex}]/CRCUnitArr/@Path`, gmepXmlDoc);
|
||||||
if (motionClipPath !== null) {
|
if (motionClipPath != null) {
|
||||||
const fileName = path.basename(motionClipPath.value);
|
const fileName = path.basename(motionClipPath.value);
|
||||||
mediaOrderList.push(fileName);
|
mediaOrderList.push(fileName);
|
||||||
}
|
}
|
||||||
@@ -616,7 +616,7 @@ function getGmepScore(gmepData, scoringJson, index) {
|
|||||||
else {
|
else {
|
||||||
const xpathExpr = ele?.replace(/{CRClipIndex}/g, crclipIndex);
|
const xpathExpr = ele?.replace(/{CRClipIndex}/g, crclipIndex);
|
||||||
const muteStatus = xpath.select1(xpathExpr, gmepXmlDoc);
|
const muteStatus = xpath.select1(xpathExpr, gmepXmlDoc);
|
||||||
userAnswer = muteStatus.value;
|
userAnswer = muteStatus?.value;
|
||||||
}
|
}
|
||||||
totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult);
|
totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult);
|
||||||
}
|
}
|
||||||
@@ -649,7 +649,7 @@ function getGmepScore(gmepData, scoringJson, index) {
|
|||||||
if (!crTrackClip) {
|
if (!crTrackClip) {
|
||||||
userAnswer = null;
|
userAnswer = null;
|
||||||
} else {
|
} else {
|
||||||
const length = parseInt(crTrackClip.getAttribute('Length'), 10);
|
const length = crTrackClip.getAttribute('Length');
|
||||||
userAnswer = length;
|
userAnswer = length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user