diff --git a/250703_DIC_2506A_채점결과.xlsx b/250703_DIC_2506A_채점결과.xlsx new file mode 100644 index 0000000..893f73e Binary files /dev/null and b/250703_DIC_2506A_채점결과.xlsx differ diff --git a/250703_DIC_2506B_채점결과.xlsx b/250703_DIC_2506B_채점결과.xlsx new file mode 100644 index 0000000..5e3836f Binary files /dev/null and b/250703_DIC_2506B_채점결과.xlsx differ diff --git a/250703_DIC_2506C_채점결과.xlsx b/250703_DIC_2506C_채점결과.xlsx new file mode 100644 index 0000000..d6d52f0 Binary files /dev/null and b/250703_DIC_2506C_채점결과.xlsx differ diff --git a/250703_DPI_2506C_채점결과.xlsx b/250703_DPI_2506C_채점결과.xlsx new file mode 100644 index 0000000..8c337f0 Binary files /dev/null and b/250703_DPI_2506C_채점결과.xlsx differ diff --git a/DIC_2506A.json b/DIC_2506A.json new file mode 100644 index 0000000..f17f63d --- /dev/null +++ b/DIC_2506A.json @@ -0,0 +1,739 @@ +{ + "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": "none", + "point": 0 + }, + "5": { + "ele": "$.children[?(@.name=='Trail with Water')].name", + "value": "Trail with Water", + "point": 4 + }, + "6": { + "ele": "$.children[?(@.name=='Trail with Water')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 2 + }, + "7": { + "ele": "$.children[?(@.name=='Trail with Water')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 2 + }, + "8": { + "ele": "$.children[?(@.name=='Trail with Water')].text.font.sizes[0]", + "value": 48, + "point": 2 + }, + "9": { + "ele": "$.children[?(@.name=='Trail with Water')].text.font.colors[0]", + "type": "color", + "value": "76f3c8", + "point": 2 + }, + "10": { + "ele": "none", + "point": 0 + }, + "11": { + "ele": "none", + "point": 0 + }, + "12": { + "ele": "none", + "point": 0 + }, + "13": { + "ele": "$.children[?(@.name=='물길 따라 둘레길')].name", + "value": "물길 따라 둘레길", + "point": 4 + }, + "14": { + "ele": "$.children[?(@.name=='물길 따라 둘레길')].text.font.names[0]", + "type": "font", + "value": "GungsuhChe", + "point": 2, + "desc": { + "돋움체": "DotumChe", + "궁서체": "GungsuhChe", + "굴림체": "GulimChe", + "휴먼옛체": "YetR" + } + }, + "15": { + "ele": "$.children[?(@.name=='물길 따라 둘레길')].text.font.sizes[0]", + "value": 36, + "point": 2 + }, + "16": { + "ele": "$.children[?(@.name=='물길 따라 둘레길')].text.font.colors[0]", + "type": "color", + "value": "fafd00", + "point": 2 + }, + "17": { + "ele": "none", + "point": 0 + }, + "18": { + "ele": "none", + "point": 0 + }, + "19": { + "ele": "none", + "point": 0 + }, + "20": { + "ele": "none", + "point": 0 + }, + "21": { + "ele": "none", + "point": 0 + }, + "22": { + "ele": "none", + "point": 0 + }, + "23": { + "ele": "none", + "point": 0 + }, + "24": { + "ele": "none", + "point": 0 + }, + "25": { + "ele": "none", + "point": 0 + }, + "26": { + "ele": "none", + "point": 0 + }, + "27": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "size", + "value": { + "width": 65, + "height": 45 + }, + "point": 4 + }, + "28": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "2": { + "1": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[not(@Length<='5' and @ClipLength='-1')]/@ClipIndex", + "type": "mediaOrder", + "value": ["동영상.mp4", "이미지1.jpg", "이미지3.jpg", "이미지2.jpg"], + "point": 4, + "desc": "클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다." + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1]/@Speed", + "type": "oneAnswer", + "value": { + "speed": "150" + }, + "point": 2, + "desc": "100당 1배속 / 130 = 1.3배속" + }, + "3": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']", + "type": "startEnd", + "media": "동영상.mp4", + "value": { + "start": "0", + "end": "350" + }, + "point": 2, + "desc": "start: 시작시간 / end: 재생시간( 12.20 = 12*30 + 20 = 380 )" + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "effect", + "media": "동영상.mp4", + "value": { + "ID": "90", + "VID104": "5", + "VID103": "1.5" + }, + "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": "6ad2cd", + "point": 2, + "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" + }, + "9": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "search": "휴식 중인 청둥오리들", + "type": "video.Location", + "value": ["0.29270834", "0.92962962"], + "point": 2, + "desc": "정답 파일의 자막 좌표를 기준으로 프로그램 내부적으로 0.1까지 오차를 허용한다" + }, + "10": { + "ele": "", + "search": "휴식 중인 청둥오리들", + "type": "video.StartTime", + "value": 160, + "point": 2, + "desc": "내부적으로 자막의 시작시간과 길이를 계산" + }, + "11": { + "ele": "", + "search": "휴식 중인 청둥오리들", + "type": "video.Length", + "value": 180, + "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": "이미지1.jpg", + "value": 150, + "point": 2 + }, + "14": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "imageOverlay", + "media": "이미지1.jpg", + "value": { + "ID": "102", + "VID100": "5" + }, + "point": 2, + "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" + }, + "15": { + "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", + "type": "clipTransition", + "media": "이미지1.jpg", + "value": { + "ID": "12", + "Range": "470:500", + "Type": "2" + }, + "point": 2, + "desc": "오버랩일 경우 Type속성값 16으로 변경" + }, + "16": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", + "type": "imageLength", + "media": "이미지3.jpg", + "value": 180, + "point": 2 + }, + "17": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "imageOverlay", + "media": "이미지3.jpg", + "value": { + "ID": "67", + "VID102": "30" + }, + "point": 2, + "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" + }, + "18": { + "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", + "type": "clipTransition", + "media": "이미지3.jpg", + "value": { + "ID": "14", + "Range": "620:680", + "Type": "2" + }, + "point": 2, + "desc": "오버랩일 경우 Type속성값 16으로 변경" + }, + "19": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", + "type": "imageLength", + "media": "이미지2.jpg", + "value": 180, + "point": 2 + }, + "20": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "imageOverlay", + "media": "이미지2.jpg", + "value": { + "ID": "103", + "VID102": "7" + }, + "point": 2, + "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" + }, + "21": { + "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", + "type": "clipTransition", + "media": "이미지2.jpg", + "value": { + "ID": "7", + "Range": "800:860", + "Type": "2" + }, + "point": 2, + "desc": "오버랩일 경우 Type속성값 16으로 변경" + }, + "22": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name", + "search": "둘레길 생태계 (Trail Ecosystem)", + "type": "video.Text", + "value": "둘레길 생태계 (Trail Ecosystem)", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "둘레길 생태계 (Trail Ecosystem)", + "type": "video.Text", + "value": "돋움체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "둘레길 생태계 (Trail Ecosystem)", + "type": "video.Text", + "value": "150", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "둘레길 생태계 (Trail Ecosystem)", + "type": "video.Text.Color", + "value": "fff100", + "point": 2, + "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" + }, + "26": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']", + "search": "둘레길 생태계 (Trail Ecosystem)", + "type": "video.Text.Outline", + "value": { + "width": "40", + "color": "7b1fa2" + }, + "point": 2, + "desc": "두께는 XML에서는 소수점으로 표기되지만, 프로그램 내부적으로 변환하여 사용하므로 현재 파일에서는 정수로 작성" + }, + "27": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr", + "search": "둘레길 생태계 (Trail Ecosystem)", + "type": "opening.Text.FadeInEffect", + "value": { + "VID505": "6", + "VID507": "2" + }, + "point": 3, + "desc": "오프닝자막의 나타나기 효과를 확인하는 문항. id속성은 VID505, playtime속성은 VID507으로 XML 내부에 표기되어 있다." + }, + "28": { + "ele": "", + "search": "둘레길 생태계 (Trail Ecosystem)", + "type": "opening.StartTime", + "value": 0, + "point": 2, + "desc": "오프닝자막의 시작시간 value 속성만 수정" + }, + "29": { + "ele": "", + "search": "둘레길 생태계 (Trail Ecosystem)", + "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": 840, + "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": "파일명 확인" + } + } +} diff --git a/DIC_곰픽채점기준표.json b/DIC_2506B.json similarity index 84% rename from DIC_곰픽채점기준표.json rename to DIC_2506B.json index 58030f2..39f7272 100644 --- a/DIC_곰픽채점기준표.json +++ b/DIC_2506B.json @@ -57,8 +57,8 @@ "point": 0 }, "4": { - "ele": "$.children[?(@.name=='꽃잎들')].name", - "value": "꽃잎들", + "ele": "$.children[?(@.name=='산책길')].name", + "value": "산책길", "point": 4 }, "5": { @@ -66,30 +66,30 @@ "point": 0 }, "6": { - "ele": "$.children[?(@.name=='Flower Rock')].name", - "value": "Flower Rock", + "ele": "$.children[?(@.name=='Healing Forest')].name", + "value": "Healing Forest", "point": 4 }, "7": { - "ele": "$.children[?(@.name=='Flower Rock')].text.font.names[0]", + "ele": "$.children[?(@.name=='Healing Forest')].text.font.names[0]", "type": "font", "value": "Arial", "point": 2 }, "8": { - "ele": "$.children[?(@.name=='Flower Rock')].text.font.names[0]", + "ele": "$.children[?(@.name=='Healing Forest')].text.font.names[0]", "value": "Arial-BoldItalicMT", "point": 2 }, "9": { - "ele": "$.children[?(@.name=='Flower Rock')].text.font.sizes[0]", + "ele": "$.children[?(@.name=='Healing Forest')].text.font.sizes[0]", "value": 48, "point": 2 }, "10": { - "ele": "$.children[?(@.name=='Flower Rock')].text.font.colors[0]", + "ele": "$.children[?(@.name=='Healing Forest')].text.font.colors[0]", "type": "color", - "value": "d6f592", + "value": "d93009", "point": 2 }, "11": { @@ -105,12 +105,12 @@ "point": 0 }, "14": { - "ele": "$.children[?(@.name=='꽃과 바위')].name", - "value": "꽃과 바위", + "ele": "$.children[?(@.name=='치유의 숲')].name", + "value": "치유의 숲", "point": 4 }, "15": { - "ele": "$.children[?(@.name=='꽃과 바위')].text.font.names[0]", + "ele": "$.children[?(@.name=='치유의 숲')].text.font.names[0]", "type": "font", "value": "GungsuhChe", "point": 2, @@ -122,14 +122,14 @@ } }, "16": { - "ele": "$.children[?(@.name=='꽃과 바위')].text.font.sizes[0]", + "ele": "$.children[?(@.name=='치유의 숲')].text.font.sizes[0]", "value": 36, "point": 2 }, "17": { - "ele": "$.children[?(@.name=='꽃과 바위')].text.font.colors[0]", + "ele": "$.children[?(@.name=='치유의 숲')].text.font.colors[0]", "type": "color", - "value": "0d17d5", + "value": "19ea4a", "point": 2 }, "18": { @@ -149,8 +149,8 @@ "point": 0 }, "22": { - "ele": "$.children[?(@.name=='노랑꽃')].name", - "value": "노랑꽃", + "ele": "$.children[?(@.name=='조각상')].name", + "value": "조각상", "point": 4 }, "23": { @@ -184,15 +184,15 @@ "1": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[not(@Length<='5' and @ClipLength='-1')]/@ClipIndex", "type": "mediaOrder", - "value": ["동영상.mp4", "이미지3.jpg", "이미지1.jpg", "이미지2.jpg"], + "value": ["동영상.mp4", "이미지1.jpg", "이미지3.jpg", "이미지2.jpg"], "point": 4, - "desc": "비디오1 트랙에 있는 클립의 ClipIndex값을 기준으로 CRClipArr에서 Path값을 가져와서 정답 채점, 클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다." + "desc": "클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다." }, "2": { "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1]/@Speed", "type": "oneAnswer", "value": { - "speed": "140" + "speed": "120" }, "point": 2, "desc": "100당 1배속 / 130 = 1.3배속" @@ -203,73 +203,73 @@ "media": "동영상.mp4", "value": { "start": "0", - "end": "370" + "end": "380" }, "point": 2, - "desc": "시작시간과 재생시간 정답값 입력, 3번문항은 '동영상.mp4' 클립의 길이를 확인하는 문항이므로 media는 수정할 필요가 없다." + "desc": "start: 시작시간 / end: 재생시간( 12.20 = 12*30 + 20 = 380 )" }, "4": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", "type": "effect", "media": "동영상.mp4", "value": { - "ID": "44", - "VID100": "8", - "VID103": "0.89999998" + "ID": "168", + "VID100": "0.75", + "VID102": "10" }, "point": 3, "desc": "value값의 키값(VID___)은 이펙트의 속성종류에 따라 변경되므로 채점기준표작성시 확인 필요" }, "5": { "ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.Text", - "value": "화단의 꽃들", + "value": "푸르른 풀과 꽃", "point": 3 }, "6": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.Text", - "value": "돋움체", + "value": "궁서체", "point": 2 }, "7": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.Text", - "value": "110", + "value": "100", "point": 2 }, "8": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.Text.Color", - "value": "ff531b", + "value": "feccbc", "point": 2, "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" }, "9": { "ele": "//CROwneUnit[{index}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.Location", - "value": ["0.38333333", "0.92962962"], + "value": ["0.36562499", "0.93333334"], "point": 2, "desc": "정답 파일의 자막 좌표를 기준으로 프로그램 내부적으로 0.1까지 오차를 허용한다" }, "10": { "ele": "", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.StartTime", - "value": 170, + "value": 175, "point": 2, "desc": "내부적으로 자막의 시작시간과 길이를 계산" }, "11": { "ele": "", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.Length", - "value": 150, + "value": 180, "point": 2, "desc": "내부적으로 자막의 시작시간과 길이를 계산" }, @@ -283,17 +283,17 @@ "13": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", "type": "imageLength", - "media": "이미지3.jpg", - "value": "180", + "media": "이미지1.jpg", + "value": 180, "point": 2 }, "14": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", "type": "imageOverlay", - "media": "이미지3.jpg", + "media": "이미지1.jpg", "value": { - "ID": "67", - "VID102": "40" + "ID": "184", + "VID101": "8" }, "point": 2, "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" @@ -301,10 +301,10 @@ "15": { "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", "type": "clipTransition", - "media": "이미지3.jpg", + "media": "이미지1.jpg", "value": { - "ID": "10", - "Range": "490:550", + "ID": "7", + "Range": "500:560", "Type": "2" }, "point": 2, @@ -313,17 +313,17 @@ "16": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", "type": "imageLength", - "media": "이미지1.jpg", - "value": "180", + "media": "이미지3.jpg", + "value": 150, "point": 2 }, "17": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", "type": "imageOverlay", - "media": "이미지1.jpg", + "media": "이미지3.jpg", "value": { - "ID": "103", - "VID102": "7" + "ID": "102", + "VID100": "5" }, "point": 2, "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" @@ -331,10 +331,10 @@ "18": { "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", "type": "clipTransition", - "media": "이미지1.jpg", + "media": "이미지3.jpg", "value": { - "ID": "12", - "Range": "670:730", + "ID": "14", + "Range": "680:710", "Type": "2" }, "point": 2, @@ -344,7 +344,7 @@ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", "type": "imageLength", "media": "이미지2.jpg", - "value": "150", + "value": 180, "point": 2 }, "20": { @@ -352,8 +352,8 @@ "type": "imageOverlay", "media": "이미지2.jpg", "value": { - "ID": "102", - "VID101": "3" + "ID": "67", + "VID104": "3" }, "point": 2, "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" @@ -363,8 +363,8 @@ "type": "clipTransition", "media": "이미지2.jpg", "value": { - "ID": "0", - "Range": "850:880", + "ID": "20", + "Range": "800:890", "Type": "2" }, "point": 2, @@ -372,58 +372,58 @@ }, "22": { "ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "video.Text", - "value": "아름다운 꽃 축제 (Happy Flower Festival)", + "value": "숲속 치유 공원 (Forest Healing Park)", "point": 3 }, "23": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "video.Text", - "value": "궁서체", + "value": "바탕체", "point": 2 }, "24": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "video.Text", - "value": "140", + "value": "150", "point": 2 }, "25": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "video.Text.Color", - "value": "ec008c", + "value": "fec02d", "point": 2, "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" }, "26": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "video.Text.Outline", "value": { - "width": "40", - "color": "fff9c4" + "width": "20", + "color": "262626" }, "point": 2, "desc": "두께는 XML에서는 소수점으로 표기되지만, 프로그램 내부적으로 변환하여 사용하므로 현재 파일에서는 정수로 작성" }, "27": { "ele": "//CROwneUnit[{index}]/CRCUnitArr", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "opening.Text.FadeInEffect", "value": { - "ID": "14", - "PlayTime": "2" + "VID505": "14", + "VID507": "2" }, "point": 3, "desc": "오프닝자막의 나타나기 효과를 확인하는 문항. id속성은 VID505, playtime속성은 VID507으로 XML 내부에 표기되어 있다." }, "28": { "ele": "", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "opening.StartTime", "value": 0, "point": 2, @@ -431,7 +431,7 @@ }, "29": { "ele": "", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "opening.Length", "value": 120, "point": 2 @@ -447,7 +447,7 @@ "ele": "//CRTrackList[@Name='오디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']", "type": "audio.EndTime", "media": "음악.mp3", - "value": "870", + "value": 870, "point": 2 }, "32": { @@ -456,7 +456,7 @@ "media": "음악.mp3", "value": { "ID": "1", - "PlayTime": "60" + "PlayTime": "90" }, "point": 2, "desc": "ID속성-페이드인:0 / 페이드아웃: 1" @@ -504,8 +504,8 @@ "밝기/대비": ["밝기", "대비"], "노출": "노출", "색조/채도": ["색조", "채도", "명도"], - "감마":["리프트","감마","게인"], - "세피아":["U","V"], + "감마": ["리프트", "감마", "게인"], + "세피아": ["U", "V"], "생동감": "생동감" } }, diff --git a/DIC_2506C.json b/DIC_2506C.json new file mode 100644 index 0000000..138719c --- /dev/null +++ b/DIC_2506C.json @@ -0,0 +1,739 @@ +{ + "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": "none", + "point": 0 + }, + "5": { + "ele": "$.children[?(@.name=='Happy Lake Park')].name", + "value": "Happy Lake Park", + "point": 4 + }, + "6": { + "ele": "$.children[?(@.name=='Happy Lake Park')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 2 + }, + "7": { + "ele": "$.children[?(@.name=='Happy Lake Park')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 2 + }, + "8": { + "ele": "$.children[?(@.name=='Happy Lake Park')].text.font.sizes[0]", + "value": 48, + "point": 2 + }, + "9": { + "ele": "$.children[?(@.name=='Happy Lake Park')].text.font.colors[0]", + "type": "color", + "value": "bd04bb", + "point": 2 + }, + "10": { + "ele": "none", + "point": 0 + }, + "11": { + "ele": "none", + "point": 0 + }, + "12": { + "ele": "none", + "point": 0 + }, + "13": { + "ele": "$.children[?(@.name=='행복한 호수공원')].name", + "value": "행복한 호수공원", + "point": 4 + }, + "14": { + "ele": "$.children[?(@.name=='행복한 호수공원')].text.font.names[0]", + "type": "font", + "value": "GungsuhChe", + "point": 2, + "desc": { + "돋움체": "DotumChe", + "궁서체": "GungsuhChe", + "굴림체": "GulimChe", + "휴먼옛체": "YetR" + } + }, + "15": { + "ele": "$.children[?(@.name=='행복한 호수공원')].text.font.sizes[0]", + "value": 36, + "point": 2 + }, + "16": { + "ele": "$.children[?(@.name=='행복한 호수공원')].text.font.colors[0]", + "type": "color", + "value": "146c08", + "point": 2 + }, + "17": { + "ele": "none", + "point": 0 + }, + "18": { + "ele": "none", + "point": 0 + }, + "19": { + "ele": "none", + "point": 0 + }, + "20": { + "ele": "none", + "point": 0 + }, + "21": { + "ele": "none", + "point": 0 + }, + "22": { + "ele": "none", + "point": 0 + }, + "23": { + "ele": "none", + "point": 0 + }, + "24": { + "ele": "none", + "point": 0 + }, + "25": { + "ele": "none", + "point": 0 + }, + "26": { + "ele": "none", + "point": 0 + }, + "27": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "size", + "value": { + "width": 65, + "height": 45 + }, + "point": 4 + }, + "28": { + "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": "클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다." + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1]/@Speed", + "type": "oneAnswer", + "value": { + "speed": "110" + }, + "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": "start: 시작시간 / end: 재생시간( 12.20 = 12*30 + 20 = 380 )" + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "effect", + "media": "동영상.mp4", + "value": { + "ID": "44", + "VID100": "10", + "VID103": "1.2" + }, + "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": "f4511e", + "point": 2, + "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" + }, + "9": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "search": "호수의 시원한 전경", + "type": "video.Location", + "value": ["0.3125", "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": 180, + "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": 150, + "point": 2 + }, + "14": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "imageOverlay", + "media": "이미지3.jpg", + "value": { + "ID": "173", + "VID101": "300" + }, + "point": 2, + "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" + }, + "15": { + "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", + "type": "clipTransition", + "media": "이미지3.jpg", + "value": { + "ID": "21", + "Range": "500:530", + "Type": "2" + }, + "point": 2, + "desc": "오버랩일 경우 Type속성값 16으로 변경" + }, + "16": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", + "type": "imageLength", + "media": "이미지1.jpg", + "value": 210, + "point": 2 + }, + "17": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "imageOverlay", + "media": "이미지1.jpg", + "value": { + "ID": "67", + "VID102": "60" + }, + "point": 2, + "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" + }, + "18": { + "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", + "type": "clipTransition", + "media": "이미지1.jpg", + "value": { + "ID": "10", + "Range": "680:740", + "Type": "2" + }, + "point": 2, + "desc": "오버랩일 경우 Type속성값 16으로 변경" + }, + "19": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", + "type": "imageLength", + "media": "이미지2.jpg", + "value": 180, + "point": 2 + }, + "20": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "imageOverlay", + "media": "이미지2.jpg", + "value": { + "ID": "184", + "VID103": "50" + }, + "point": 2, + "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" + }, + "21": { + "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", + "type": "clipTransition", + "media": "이미지2.jpg", + "value": { + "ID": "7", + "Range": "890:920", + "Type": "2" + }, + "point": 2, + "desc": "오버랩일 경우 Type속성값 16으로 변경" + }, + "22": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text", + "value": "호수공원의 추억 (Memories of Lake Park)", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text", + "value": "궁서체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text", + "value": "150", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text.Color", + "value": "1976d2", + "point": 2, + "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" + }, + "26": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text.Outline", + "value": { + "width": "25", + "color": "cdf9fc" + }, + "point": 2, + "desc": "두께는 XML에서는 소수점으로 표기되지만, 프로그램 내부적으로 변환하여 사용하므로 현재 파일에서는 정수로 작성" + }, + "27": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "opening.Text.FadeInEffect", + "value": { + "VID505": "15", + "VID507": "2" + }, + "point": 3, + "desc": "오프닝자막의 나타나기 효과를 확인하는 문항. id속성은 VID505, playtime속성은 VID507으로 XML 내부에 표기되어 있다." + }, + "28": { + "ele": "", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "opening.StartTime", + "value": 0, + "point": 2, + "desc": "오프닝자막의 시작시간 value 속성만 수정" + }, + "29": { + "ele": "", + "search": "호수공원의 추억 (Memories of Lake 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": 900, + "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": "파일명 확인" + } + } +} diff --git a/DPI_2506C.json b/DPI_2506C.json new file mode 100644 index 0000000..480b7e7 --- /dev/null +++ b/DPI_2506C.json @@ -0,0 +1,746 @@ +{ + "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": "none", + "point": 0 + }, + "5": { + "ele": "$.children[?(@.name=='Happy Lake Park')].name", + "value": "Happy Lake Park", + "point": 4 + }, + "6": { + "ele": "$.children[?(@.name=='Happy Lake Park')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 2 + }, + "7": { + "ele": "$.children[?(@.name=='Happy Lake Park')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 2 + }, + "8": { + "ele": "$.children[?(@.name=='Happy Lake Park')].text.font.sizes[0]", + "value": 48, + "point": 2 + }, + "9": { + "ele": "$.children[?(@.name=='Happy Lake Park')].text.font.colors[0]", + "type": "color", + "value": "bd04bb", + "point": 2 + }, + "10": { + "ele": "none", + "point": 0 + }, + "11": { + "ele": "none", + "point": 0 + }, + "12": { + "ele": "none", + "point": 0 + }, + "13": { + "ele": "$.children[?(@.name=='행복한 호수공원')].name", + "value": "행복한 호수공원", + "point": 4 + }, + "14": { + "ele": "$.children[?(@.name=='행복한 호수공원')].text.font.names[0]", + "type": "font", + "value": "GungsuhChe", + "point": 2, + "desc": { + "돋움체": "DotumChe", + "궁서체": "GungsuhChe", + "굴림체": "GulimChe", + "휴먼옛체": "YetR" + } + }, + "15": { + "ele": "$.children[?(@.name=='행복한 호수공원')].text.font.sizes[0]", + "value": 36, + "point": 2 + }, + "16": { + "ele": "$.children[?(@.name=='행복한 호수공원')].text.font.colors[0]", + "type": "color", + "value": "146c08", + "point": 2 + }, + "17": { + "ele": "none", + "point": 0 + }, + "18": { + "ele": "none", + "point": 0 + }, + "19": { + "ele": "none", + "point": 0 + }, + "20": { + "ele": "none", + "point": 0 + }, + "21": { + "ele": "none", + "point": 0 + }, + "22": { + "ele": "none", + "point": 0 + }, + "23": { + "ele": "none", + "point": 0 + }, + "24": { + "ele": "none", + "point": 0 + }, + "25": { + "ele": "none", + "point": 0 + }, + "26": { + "ele": "none", + "point": 0 + }, + "27": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "size", + "value": { + "width": 65, + "height": 45 + }, + "point": 4 + }, + "28": { + "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": "클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다." + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1]/@Speed", + "type": "oneAnswer", + "value": { + "speed": "110" + }, + "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": "start: 시작시간 / end: 재생시간( 12.20 = 12*30 + 20 = 380 )" + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "effect", + "media": "동영상.mp4", + "value": { + "ID": "44", + "VID100": "10", + "VID103": "1.2" + }, + "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": "f4511e", + "point": 2, + "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" + }, + "9": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "search": "호수의 시원한 전경", + "type": "video.Location", + "value": ["0.3125", "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": 180, + "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": 150, + "point": 2 + }, + "14": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "imageOverlay", + "media": "이미지3.jpg", + "value": { + "ID": "173", + "VID101": "300" + }, + "point": 2, + "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" + }, + "15": { + "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", + "type": "clipTransition", + "media": "이미지3.jpg", + "value": { + "ID": "21", + "Range": "500:530", + "Type": "2" + }, + "point": 2, + "desc": "오버랩일 경우 Type속성값 16으로 변경" + }, + "16": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", + "type": "imageLength", + "media": "이미지1.jpg", + "value": 210, + "point": 2 + }, + "17": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "imageOverlay", + "media": "이미지1.jpg", + "value": { + "ID": "67", + "VID102": "60" + }, + "point": 2, + "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" + }, + "18": { + "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", + "type": "clipTransition", + "media": "이미지1.jpg", + "value": { + "ID": "10", + "Range": "680:740", + "Type": "2" + }, + "point": 2, + "desc": "오버랩일 경우 Type속성값 16으로 변경" + }, + "19": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", + "type": "imageLength", + "media": "이미지2.jpg", + "value": 180, + "point": 2 + }, + "20": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "imageOverlay", + "media": "이미지2.jpg", + "value": { + "ID": "184", + "VID103": "50" + }, + "point": 2, + "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" + }, + "21": { + "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", + "type": "clipTransition", + "media": "이미지2.jpg", + "value": { + "ID": "7", + "Range": "890:920", + "Type": "2" + }, + "point": 2, + "desc": "오버랩일 경우 Type속성값 16으로 변경" + }, + "22": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text", + "value": "호수공원의 추억 (Memories of Lake Park)", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text", + "value": "궁서체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text", + "value": "150", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text.Color", + "value": "1976d2", + "point": 2, + "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" + }, + "26": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text.Outline", + "value": { + "width": "25", + "color": "cdf9fc" + }, + "point": 2, + "desc": "두께는 XML에서는 소수점으로 표기되지만, 프로그램 내부적으로 변환하여 사용하므로 현재 파일에서는 정수로 작성" + }, + "27": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "opening.Text.FadeInEffect", + "value": { + "VID505": "15", + "VID507": "2" + }, + "point": 3, + "desc": "오프닝자막의 나타나기 효과를 확인하는 문항. id속성은 VID505, playtime속성은 VID507으로 XML 내부에 표기되어 있다." + }, + "28": { + "ele": "", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "opening.StartTime", + "value": 0, + "point": 2, + "desc": "오프닝자막의 시작시간 value 속성만 수정" + }, + "29": { + "ele": "", + "search": "호수공원의 추억 (Memories of Lake 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": 900, + "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": "Museum", + "point": 5, + "desc": "Museum 레이어가 있는지 여부 체크" + }, + "4": { + "type": "layer.Effects", + "ele": "//Layer[Name[@value='{search}']]/Effects/Item", + "search": "Museum", + "value": { + "name": "선명하게", + "option": { + "양": "10" + } + }, + "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": "ROUNDED_RECTANGLE", + "point": 3, + "desc": "레이어 쉐이프 타입이 타원인지 체크" + }, + "8": { + "type": "shape.size", + "ele": "//Layer//op_points", + "value": { + "width": 90, + "height": 20 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "9": { + "type": "shape.color", + "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "FF0000", + "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": "RECTANGLE", + "point": 3, + "desc": "모서리가 둥근 사각형 : ROUNDED_RECTANGLE / 사각형 : RECTANGLE" + }, + "6": { + "type": "shape.size", + "ele": "//Layer//op_points", + "value": { + "width": 380, + "height": 70 + }, + "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": "00C9BA", + "endColor": "A6A600" + }, + "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": "36", + "point": 3 + }, + "12": { + "type": "text.color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "151DE8", + "point": 3 + }, + "13": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "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": "ELLIPSE", + "point": 3, + "desc": { + "사각형": "RECTANGLE", + "원형/타원형": "ELLIPSE", + "17~20 문항 option값 변경":"" + } + }, + "17": { + "type": "clipping.size", + "ele": "//Layer//Shape[shape_type/@value='{option}']//op_points", + "option": "ELLIPSE", + "value": { + "width": 180, + "height": 180 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='{option}']/outline_peninfo/Width/@value", + "option": "ELLIPSE", + "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": "ELLIPSE", + "value": "FF3030", + "point": 3, + "desc": "채우기:secondary_color, 외곽선:primary_color" + }, + "20": { + "type": "shadow", + "ele": "//Layer//Shape[shape_type/@value='{option}']", + "option": "ELLIPSE", + "value": { + "shadow": true, + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + }, + "21": { + "type": "none", + "ele": "", + "point": 0, + "desc": "기본설정" + }, + "22": { + "type": "none", + "ele": "", + "point": 0, + "desc": "파일명 확인" + } + } +} diff --git a/gpdpScoring.js b/gpdpScoring.js index 3f96986..a75eb6e 100644 --- a/gpdpScoring.js +++ b/gpdpScoring.js @@ -231,32 +231,25 @@ function getGpdpScore(gpdpData, scoringJson, index) { name: name, option: {}, } + const optionKeys = Object.keys(rightAnswer['option']); if (name === '흑백') { const Intensity = xpath.select1('Intensity/@value', effectData)?.value; - - const optionKeys = Object.keys(rightAnswer['option']); if (optionKeys.includes('강도')) userAnswer['option']['강도'] = Intensity; } else if (name === '밝기/대비') { const brightness = xpath.select1('brightness/@value', effectData)?.value; const contrast = xpath.select1('contrast/@value', effectData)?.value; - - const optionKeys = Object.keys(rightAnswer['option']); if (optionKeys.includes('밝기')) userAnswer['option']['밝기'] = brightness; if (optionKeys.includes('대비')) userAnswer['option']['대비'] = contrast; } else if (name === '노출') { const ExposureValue = xpath.select1('ExposureValue/@value', effectData)?.value; - - const optionKeys = Object.keys(rightAnswer['option']); if (optionKeys.includes('노출')) userAnswer['option']['노출'] = ExposureValue; } else if (name === '색조/채도') { const hue = xpath.select1('hue/@value', effectData)?.value; const saturation = xpath.select1('saturation/@value', effectData)?.value; const lightness = xpath.select1('lightness/@value', effectData)?.value; - - const optionKeys = Object.keys(rightAnswer['option']); if (optionKeys.includes('색조')) userAnswer['option']['색조'] = hue; if (optionKeys.includes('채도')) userAnswer['option']['채도'] = saturation; if (optionKeys.includes('명도')) userAnswer['option']['명도'] = lightness; @@ -265,8 +258,6 @@ function getGpdpScore(gpdpData, scoringJson, index) { const lift = xpath.select1('Lift/@value', effectData)?.value; const gamma = xpath.select1('Gamma/@value', effectData)?.value; const gain = xpath.select1('Gain/@value', effectData)?.value; - - const optionKeys = Object.keys(rightAnswer['option']); if (optionKeys.includes('리프트')) userAnswer['option']['리프트'] = lift; if (optionKeys.includes('감마')) userAnswer['option']['감마'] = gamma; if (optionKeys.includes('게인')) userAnswer['option']['게인'] = gain; @@ -286,14 +277,32 @@ function getGpdpScore(gpdpData, scoringJson, index) { // 설정한 값 그대로 적용되는 경우도 있어서 오차범위 2로 설정 const userValue = parseInt(vibranceValue, 10); const rightValue = parseInt(rightAnswer.option['생동감'], 10); - if (Math.abs(rightValue - userValue) <= 2) { - const optionKeys = Object.keys(rightAnswer['option']); if (optionKeys.includes('생동감')) { userAnswer['option']['생동감'] = rightValue.toString(); } } } + else if (name === '흐리게') { + const radius = xpath.select1('radius/@value', effectData)?.value; + if (optionKeys.includes('반경')) userAnswer['option']['반경'] = radius; + } + else if (name === '글로우') { + const radius = xpath.select1('radius/@value', effectData)?.value; + const brightness = xpath.select1('brightness/@value', effectData)?.value; + const contrast = xpath.select1('contrast/@value', effectData)?.value; + if (optionKeys.includes('반경')) userAnswer['option']['반경'] = radius; + if (optionKeys.includes('밝기')) userAnswer['option']['밝기'] = brightness; + if (optionKeys.includes('대비')) userAnswer['option']['대비'] = contrast; + } + else if (name === '픽셀효과') { + const cellSize = xpath.select1('cellSize/@value', effectData)?.value; + if (optionKeys.includes('셀크기')) userAnswer['option']['셀크기'] = cellSize; + } + else if (name === '선명하게') { + const amount = xpath.select1('amount/@value', effectData)?.value; + if (optionKeys.includes('양')) userAnswer['option']['양'] = amount; + } for (const key in rightAnswer.option) { // 속성값이 정답과 다른 경우가 있으면 오답처리 @@ -329,7 +338,7 @@ function getGpdpScore(gpdpData, scoringJson, index) { // 공백, 대소문자 무시 const cleanUserAnswer = userAnswer.replace(/\s+/g, '').toLowerCase(); const cleanRightAnswer = rightAnswer.replace(/\s+/g, '').toLowerCase(); - + // 하나라도 일치하면 정답 if (cleanUserAnswer === cleanRightAnswer) { isMatched = true; diff --git a/psdExport_2.js b/psdExport_2.js index bd79421..506adc0 100644 --- a/psdExport_2.js +++ b/psdExport_2.js @@ -13,28 +13,28 @@ const getToday = require('./getToday.js'); // const { get } = require('http'); const todayDate = getToday(); -const examRound = '2504'; -// const dic_or_dpi = 'DIC' -const dic_or_dpi = 'DPI' +const examRound = '2506'; +// const DICorDPI = 'DIC' +const DICorDPI = 'DPI' const examTypes = [ // 'A', - 'B', - // 'C', + // 'B', + 'C', // 'D' ]; // testMode가 true일 경우 TEST 폴더에 있는 답안 파일을 읽어옴 -// const testMode = false; -const testMode = true; +const testMode = false; +// const testMode = true; const outputExcelFiles = []; examTypes.forEach(type => { - const scoringJson = require(`./DIC_${examRound}${type}.json`); - const answerFilesDir = `./output/${examRound}/${type}/${testMode ? 'TEST' : dic_or_dpi}`; - let outputExcelFile = `./${todayDate}_${dic_or_dpi}_${examRound}${type}_채점결과.xlsx`; + const scoringJson = require(`./${DICorDPI}_${examRound}${type}.json`); + const answerFilesDir = `./output/${examRound}/${type}/${testMode ? 'TEST' : DICorDPI}`; + let outputExcelFile = `./${todayDate}_${DICorDPI}_${examRound}${type}_채점결과.xlsx`; if (testMode) { - outputExcelFile = `./00_${dic_or_dpi}_${examRound}${type}_TEST.xlsx`; + outputExcelFile = `./00_${DICorDPI}_${examRound}${type}_TEST.xlsx`; } // const scoringJson = require(`./DIC_${examRound}${type}.json`); // const answerFilesDir = `./output/${examRound}/${type}/${testMode ? 'TEST' : 'DIC'}`; @@ -414,7 +414,7 @@ function getGmepScore(gmepData, scoringJson, index) { result = result.replace(/"/g, "'"); search = result; ele = ele?.replace(/{search}/g, search); - } + } else { ele = ele?.includes('{search}') ? null : ele; } @@ -492,7 +492,11 @@ function getGmepScore(gmepData, scoringJson, index) { // CRTrackClip 요소의 Pos(시작시간)과 Length(재생길이)를 구함 const pos = xpath.select1('@Pos', crTrackClip); const length = xpath.select1('@Length', crTrackClip); - userAnswer = { start: pos.value, end: length.value } + + userAnswer = { + start: pos.value, + end: length.value + } } } totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult); @@ -629,7 +633,7 @@ function getGmepScore(gmepData, scoringJson, index) { else { const xpathExpr = ele?.replace(/{CRClipIndex}/g, crclipIndex); const imageLength = xpath.select1(xpathExpr, gmepXmlDoc); - userAnswer = imageLength.value; + userAnswer = parseInt(imageLength.value, 10); } totalScore += compareAndScore(userAnswer, rightAnswer, point, key, scoringResult); } @@ -650,7 +654,7 @@ function getGmepScore(gmepData, scoringJson, index) { userAnswer = null; } else { const length = crTrackClip.getAttribute('Length'); - userAnswer = length; + userAnswer = parseInt(length, 10); } } else if (type.includes('Effect')) { @@ -738,12 +742,12 @@ function getGmepScore(gmepData, scoringJson, index) { } else if (type.includes('FadeInEffect')) { const attributes = subtitleResult.attributes; - const id = attributes.getNamedItem('VID505').value; - const playtime = attributes.getNamedItem('VID507').value; + const VID505 = attributes.getNamedItem('VID505').value; + const VID507 = attributes.getNamedItem('VID507').value; userAnswer = { - "ID": id, - "PlayTime": playtime, + "VID505": VID505, + "VID507": VID507, }; } else { diff --git a/DIC_2504B.json b/회차별채점자료/2504/json_채점기준표/0703/DIC_2504B.json similarity index 100% rename from DIC_2504B.json rename to 회차별채점자료/2504/json_채점기준표/0703/DIC_2504B.json diff --git a/DIC_2505A.json b/회차별채점자료/2505/json_채점기준표/0703/DIC_2505A.json similarity index 100% rename from DIC_2505A.json rename to 회차별채점자료/2505/json_채점기준표/0703/DIC_2505A.json diff --git a/DIC_2505B.json b/회차별채점자료/2505/json_채점기준표/0703/DIC_2505B.json similarity index 100% rename from DIC_2505B.json rename to 회차별채점자료/2505/json_채점기준표/0703/DIC_2505B.json diff --git a/DIC_2505C.json b/회차별채점자료/2505/json_채점기준표/0703/DIC_2505C.json similarity index 100% rename from DIC_2505C.json rename to 회차별채점자료/2505/json_채점기준표/0703/DIC_2505C.json diff --git a/회차별채점자료/2506/excel_채점기준표/DIC_2506A.xlsx b/회차별채점자료/2506/excel_채점기준표/DIC_2506A.xlsx index 8b30761..0d30603 100644 Binary files a/회차별채점자료/2506/excel_채점기준표/DIC_2506A.xlsx and b/회차별채점자료/2506/excel_채점기준표/DIC_2506A.xlsx differ diff --git a/회차별채점자료/2506/excel_채점기준표/DIC_2506B.xlsx b/회차별채점자료/2506/excel_채점기준표/DIC_2506B.xlsx index d1fdfe2..4bab5ea 100644 Binary files a/회차별채점자료/2506/excel_채점기준표/DIC_2506B.xlsx and b/회차별채점자료/2506/excel_채점기준표/DIC_2506B.xlsx differ diff --git a/회차별채점자료/2506/excel_채점기준표/DIC_2506C.xlsx b/회차별채점자료/2506/excel_채점기준표/DIC_2506C.xlsx index 75a63b0..92f98c0 100644 Binary files a/회차별채점자료/2506/excel_채점기준표/DIC_2506C.xlsx and b/회차별채점자료/2506/excel_채점기준표/DIC_2506C.xlsx differ diff --git a/회차별채점자료/2506/excel_채점기준표/DPI_2506C.xlsx b/회차별채점자료/2506/excel_채점기준표/DPI_2506C.xlsx new file mode 100644 index 0000000..6f0d825 Binary files /dev/null and b/회차별채점자료/2506/excel_채점기준표/DPI_2506C.xlsx differ diff --git a/회차별채점자료/2506/hwp_문제/DPI_2506C.hwp b/회차별채점자료/2506/hwp_문제/DPI_2506C.hwp new file mode 100644 index 0000000..ef697f2 Binary files /dev/null and b/회차별채점자료/2506/hwp_문제/DPI_2506C.hwp differ diff --git a/회차별채점자료/2506/json_채점기준표/DIC_2506A.json b/회차별채점자료/2506/json_채점기준표/DIC_2506A.json index 0c4ddfb..f17f63d 100644 --- a/회차별채점자료/2506/json_채점기준표/DIC_2506A.json +++ b/회차별채점자료/2506/json_채점기준표/DIC_2506A.json @@ -186,15 +186,15 @@ "1": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[not(@Length<='5' and @ClipLength='-1')]/@ClipIndex", "type": "mediaOrder", - "value": ["동영상.mp4", "이미지3.jpg", "이미지1.jpg", "이미지2.jpg"], + "value": ["동영상.mp4", "이미지1.jpg", "이미지3.jpg", "이미지2.jpg"], "point": 4, - "desc": "비디오1 트랙에 있는 클립의 ClipIndex값을 기준으로 CRClipArr에서 Path값을 가져와서 정답 채점, 클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다." + "desc": "클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다." }, "2": { "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1]/@Speed", "type": "oneAnswer", "value": { - "speed": "140" + "speed": "150" }, "point": 2, "desc": "100당 1배속 / 130 = 1.3배속" @@ -205,73 +205,73 @@ "media": "동영상.mp4", "value": { "start": "0", - "end": "370" + "end": "350" }, "point": 2, - "desc": "시작시간과 재생시간 정답값 입력, 3번문항은 '동영상.mp4' 클립의 길이를 확인하는 문항이므로 media는 수정할 필요가 없다." + "desc": "start: 시작시간 / end: 재생시간( 12.20 = 12*30 + 20 = 380 )" }, "4": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", "type": "effect", "media": "동영상.mp4", "value": { - "ID": "44", - "VID100": "8", - "VID103": "0.89999998" + "ID": "90", + "VID104": "5", + "VID103": "1.5" }, "point": 3, "desc": "value값의 키값(VID___)은 이펙트의 속성종류에 따라 변경되므로 채점기준표작성시 확인 필요" }, "5": { "ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name", - "search": "화단의 꽃들", + "search": "휴식 중인 청둥오리들", "type": "video.Text", - "value": "화단의 꽃들", + "value": "휴식 중인 청둥오리들", "point": 3 }, "6": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", - "search": "화단의 꽃들", + "search": "휴식 중인 청둥오리들", "type": "video.Text", - "value": "돋움체", + "value": "굴림체", "point": 2 }, "7": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", - "search": "화단의 꽃들", + "search": "휴식 중인 청둥오리들", "type": "video.Text", "value": "110", "point": 2 }, "8": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", - "search": "화단의 꽃들", + "search": "휴식 중인 청둥오리들", "type": "video.Text.Color", - "value": "ff531b", + "value": "6ad2cd", "point": 2, "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" }, "9": { "ele": "//CROwneUnit[{index}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", - "search": "화단의 꽃들", + "search": "휴식 중인 청둥오리들", "type": "video.Location", - "value": ["0.38333333", "0.92962962"], + "value": ["0.29270834", "0.92962962"], "point": 2, "desc": "정답 파일의 자막 좌표를 기준으로 프로그램 내부적으로 0.1까지 오차를 허용한다" }, "10": { "ele": "", - "search": "화단의 꽃들", + "search": "휴식 중인 청둥오리들", "type": "video.StartTime", - "value": 170, + "value": 160, "point": 2, "desc": "내부적으로 자막의 시작시간과 길이를 계산" }, "11": { "ele": "", - "search": "화단의 꽃들", + "search": "휴식 중인 청둥오리들", "type": "video.Length", - "value": 150, + "value": 180, "point": 2, "desc": "내부적으로 자막의 시작시간과 길이를 계산" }, @@ -285,17 +285,17 @@ "13": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", "type": "imageLength", - "media": "이미지3.jpg", - "value": "180", + "media": "이미지1.jpg", + "value": 150, "point": 2 }, "14": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", "type": "imageOverlay", - "media": "이미지3.jpg", + "media": "이미지1.jpg", "value": { - "ID": "67", - "VID102": "40" + "ID": "102", + "VID100": "5" }, "point": 2, "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" @@ -303,10 +303,10 @@ "15": { "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", "type": "clipTransition", - "media": "이미지3.jpg", + "media": "이미지1.jpg", "value": { - "ID": "10", - "Range": "490:550", + "ID": "12", + "Range": "470:500", "Type": "2" }, "point": 2, @@ -315,17 +315,17 @@ "16": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", "type": "imageLength", - "media": "이미지1.jpg", - "value": "180", + "media": "이미지3.jpg", + "value": 180, "point": 2 }, "17": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", "type": "imageOverlay", - "media": "이미지1.jpg", + "media": "이미지3.jpg", "value": { - "ID": "103", - "VID102": "7" + "ID": "67", + "VID102": "30" }, "point": 2, "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" @@ -333,10 +333,10 @@ "18": { "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", "type": "clipTransition", - "media": "이미지1.jpg", + "media": "이미지3.jpg", "value": { - "ID": "12", - "Range": "670:730", + "ID": "14", + "Range": "620:680", "Type": "2" }, "point": 2, @@ -346,7 +346,7 @@ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", "type": "imageLength", "media": "이미지2.jpg", - "value": "150", + "value": 180, "point": 2 }, "20": { @@ -354,8 +354,8 @@ "type": "imageOverlay", "media": "이미지2.jpg", "value": { - "ID": "102", - "VID101": "3" + "ID": "103", + "VID102": "7" }, "point": 2, "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" @@ -365,8 +365,8 @@ "type": "clipTransition", "media": "이미지2.jpg", "value": { - "ID": "0", - "Range": "850:880", + "ID": "7", + "Range": "800:860", "Type": "2" }, "point": 2, @@ -374,58 +374,58 @@ }, "22": { "ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "둘레길 생태계 (Trail Ecosystem)", "type": "video.Text", - "value": "아름다운 꽃 축제 (Happy Flower Festival)", + "value": "둘레길 생태계 (Trail Ecosystem)", "point": 3 }, "23": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "둘레길 생태계 (Trail Ecosystem)", "type": "video.Text", - "value": "궁서체", + "value": "돋움체", "point": 2 }, "24": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "둘레길 생태계 (Trail Ecosystem)", "type": "video.Text", - "value": "140", + "value": "150", "point": 2 }, "25": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "둘레길 생태계 (Trail Ecosystem)", "type": "video.Text.Color", - "value": "ec008c", + "value": "fff100", "point": 2, "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" }, "26": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "둘레길 생태계 (Trail Ecosystem)", "type": "video.Text.Outline", "value": { "width": "40", - "color": "fff9c4" + "color": "7b1fa2" }, "point": 2, "desc": "두께는 XML에서는 소수점으로 표기되지만, 프로그램 내부적으로 변환하여 사용하므로 현재 파일에서는 정수로 작성" }, "27": { "ele": "//CROwneUnit[{index}]/CRCUnitArr", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "둘레길 생태계 (Trail Ecosystem)", "type": "opening.Text.FadeInEffect", "value": { - "ID": "14", - "PlayTime": "2" + "VID505": "6", + "VID507": "2" }, "point": 3, "desc": "오프닝자막의 나타나기 효과를 확인하는 문항. id속성은 VID505, playtime속성은 VID507으로 XML 내부에 표기되어 있다." }, "28": { "ele": "", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "둘레길 생태계 (Trail Ecosystem)", "type": "opening.StartTime", "value": 0, "point": 2, @@ -433,7 +433,7 @@ }, "29": { "ele": "", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "둘레길 생태계 (Trail Ecosystem)", "type": "opening.Length", "value": 120, "point": 2 @@ -449,7 +449,7 @@ "ele": "//CRTrackList[@Name='오디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']", "type": "audio.EndTime", "media": "음악.mp3", - "value": "870", + "value": 840, "point": 2 }, "32": { diff --git a/회차별채점자료/2506/json_채점기준표/DIC_2506B.json b/회차별채점자료/2506/json_채점기준표/DIC_2506B.json index b223b29..39f7272 100644 --- a/회차별채점자료/2506/json_채점기준표/DIC_2506B.json +++ b/회차별채점자료/2506/json_채점기준표/DIC_2506B.json @@ -184,15 +184,15 @@ "1": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[not(@Length<='5' and @ClipLength='-1')]/@ClipIndex", "type": "mediaOrder", - "value": ["동영상.mp4", "이미지3.jpg", "이미지1.jpg", "이미지2.jpg"], + "value": ["동영상.mp4", "이미지1.jpg", "이미지3.jpg", "이미지2.jpg"], "point": 4, - "desc": "비디오1 트랙에 있는 클립의 ClipIndex값을 기준으로 CRClipArr에서 Path값을 가져와서 정답 채점, 클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다." + "desc": "클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다." }, "2": { "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1]/@Speed", "type": "oneAnswer", "value": { - "speed": "140" + "speed": "120" }, "point": 2, "desc": "100당 1배속 / 130 = 1.3배속" @@ -203,73 +203,73 @@ "media": "동영상.mp4", "value": { "start": "0", - "end": "370" + "end": "380" }, "point": 2, - "desc": "시작시간과 재생시간 정답값 입력, 3번문항은 '동영상.mp4' 클립의 길이를 확인하는 문항이므로 media는 수정할 필요가 없다." + "desc": "start: 시작시간 / end: 재생시간( 12.20 = 12*30 + 20 = 380 )" }, "4": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", "type": "effect", "media": "동영상.mp4", "value": { - "ID": "44", - "VID100": "8", - "VID103": "0.89999998" + "ID": "168", + "VID100": "0.75", + "VID102": "10" }, "point": 3, "desc": "value값의 키값(VID___)은 이펙트의 속성종류에 따라 변경되므로 채점기준표작성시 확인 필요" }, "5": { "ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.Text", - "value": "화단의 꽃들", + "value": "푸르른 풀과 꽃", "point": 3 }, "6": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.Text", - "value": "돋움체", + "value": "궁서체", "point": 2 }, "7": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.Text", - "value": "110", + "value": "100", "point": 2 }, "8": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.Text.Color", - "value": "ff531b", + "value": "feccbc", "point": 2, "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" }, "9": { "ele": "//CROwneUnit[{index}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.Location", - "value": ["0.38333333", "0.92962962"], + "value": ["0.36562499", "0.93333334"], "point": 2, "desc": "정답 파일의 자막 좌표를 기준으로 프로그램 내부적으로 0.1까지 오차를 허용한다" }, "10": { "ele": "", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.StartTime", - "value": 170, + "value": 175, "point": 2, "desc": "내부적으로 자막의 시작시간과 길이를 계산" }, "11": { "ele": "", - "search": "화단의 꽃들", + "search": "푸르른 풀과 꽃", "type": "video.Length", - "value": 150, + "value": 180, "point": 2, "desc": "내부적으로 자막의 시작시간과 길이를 계산" }, @@ -283,17 +283,17 @@ "13": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", "type": "imageLength", - "media": "이미지3.jpg", - "value": "180", + "media": "이미지1.jpg", + "value": 180, "point": 2 }, "14": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", "type": "imageOverlay", - "media": "이미지3.jpg", + "media": "이미지1.jpg", "value": { - "ID": "67", - "VID102": "40" + "ID": "184", + "VID101": "8" }, "point": 2, "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" @@ -301,10 +301,10 @@ "15": { "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", "type": "clipTransition", - "media": "이미지3.jpg", + "media": "이미지1.jpg", "value": { - "ID": "10", - "Range": "490:550", + "ID": "7", + "Range": "500:560", "Type": "2" }, "point": 2, @@ -313,17 +313,17 @@ "16": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", "type": "imageLength", - "media": "이미지1.jpg", - "value": "180", + "media": "이미지3.jpg", + "value": 150, "point": 2 }, "17": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", "type": "imageOverlay", - "media": "이미지1.jpg", + "media": "이미지3.jpg", "value": { - "ID": "103", - "VID102": "7" + "ID": "102", + "VID100": "5" }, "point": 2, "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" @@ -331,10 +331,10 @@ "18": { "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", "type": "clipTransition", - "media": "이미지1.jpg", + "media": "이미지3.jpg", "value": { - "ID": "12", - "Range": "670:730", + "ID": "14", + "Range": "680:710", "Type": "2" }, "point": 2, @@ -344,7 +344,7 @@ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", "type": "imageLength", "media": "이미지2.jpg", - "value": "150", + "value": 180, "point": 2 }, "20": { @@ -352,8 +352,8 @@ "type": "imageOverlay", "media": "이미지2.jpg", "value": { - "ID": "102", - "VID101": "3" + "ID": "67", + "VID104": "3" }, "point": 2, "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" @@ -363,8 +363,8 @@ "type": "clipTransition", "media": "이미지2.jpg", "value": { - "ID": "0", - "Range": "850:880", + "ID": "20", + "Range": "800:890", "Type": "2" }, "point": 2, @@ -372,58 +372,58 @@ }, "22": { "ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "video.Text", - "value": "아름다운 꽃 축제 (Happy Flower Festival)", + "value": "숲속 치유 공원 (Forest Healing Park)", "point": 3 }, "23": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "video.Text", - "value": "궁서체", + "value": "바탕체", "point": 2 }, "24": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "video.Text", - "value": "140", + "value": "150", "point": 2 }, "25": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "video.Text.Color", - "value": "ec008c", + "value": "fec02d", "point": 2, "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" }, "26": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "video.Text.Outline", "value": { - "width": "40", - "color": "fff9c4" + "width": "20", + "color": "262626" }, "point": 2, "desc": "두께는 XML에서는 소수점으로 표기되지만, 프로그램 내부적으로 변환하여 사용하므로 현재 파일에서는 정수로 작성" }, "27": { "ele": "//CROwneUnit[{index}]/CRCUnitArr", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "opening.Text.FadeInEffect", "value": { - "ID": "14", - "PlayTime": "2" + "VID505": "14", + "VID507": "2" }, "point": 3, "desc": "오프닝자막의 나타나기 효과를 확인하는 문항. id속성은 VID505, playtime속성은 VID507으로 XML 내부에 표기되어 있다." }, "28": { "ele": "", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "opening.StartTime", "value": 0, "point": 2, @@ -431,7 +431,7 @@ }, "29": { "ele": "", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "숲속 치유 공원 (Forest Healing Park)", "type": "opening.Length", "value": 120, "point": 2 @@ -447,7 +447,7 @@ "ele": "//CRTrackList[@Name='오디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']", "type": "audio.EndTime", "media": "음악.mp3", - "value": "870", + "value": 870, "point": 2 }, "32": { @@ -456,7 +456,7 @@ "media": "음악.mp3", "value": { "ID": "1", - "PlayTime": "60" + "PlayTime": "90" }, "point": 2, "desc": "ID속성-페이드인:0 / 페이드아웃: 1" @@ -504,8 +504,8 @@ "밝기/대비": ["밝기", "대비"], "노출": "노출", "색조/채도": ["색조", "채도", "명도"], - "감마":["리프트","감마","게인"], - "세피아":["U","V"], + "감마": ["리프트", "감마", "게인"], + "세피아": ["U", "V"], "생동감": "생동감" } }, diff --git a/회차별채점자료/2506/json_채점기준표/DIC_2506C.json b/회차별채점자료/2506/json_채점기준표/DIC_2506C.json index 26fde8b..138719c 100644 --- a/회차별채점자료/2506/json_채점기준표/DIC_2506C.json +++ b/회차별채점자료/2506/json_채점기준표/DIC_2506C.json @@ -188,13 +188,13 @@ "type": "mediaOrder", "value": ["동영상.mp4", "이미지3.jpg", "이미지1.jpg", "이미지2.jpg"], "point": 4, - "desc": "비디오1 트랙에 있는 클립의 ClipIndex값을 기준으로 CRClipArr에서 Path값을 가져와서 정답 채점, 클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다." + "desc": "클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다." }, "2": { "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1]/@Speed", "type": "oneAnswer", "value": { - "speed": "140" + "speed": "110" }, "point": 2, "desc": "100당 1배속 / 130 = 1.3배속" @@ -205,10 +205,10 @@ "media": "동영상.mp4", "value": { "start": "0", - "end": "370" + "end": "380" }, "point": 2, - "desc": "시작시간과 재생시간 정답값 입력, 3번문항은 '동영상.mp4' 클립의 길이를 확인하는 문항이므로 media는 수정할 필요가 없다." + "desc": "start: 시작시간 / end: 재생시간( 12.20 = 12*30 + 20 = 380 )" }, "4": { "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", @@ -216,52 +216,52 @@ "media": "동영상.mp4", "value": { "ID": "44", - "VID100": "8", - "VID103": "0.89999998" + "VID100": "10", + "VID103": "1.2" }, "point": 3, "desc": "value값의 키값(VID___)은 이펙트의 속성종류에 따라 변경되므로 채점기준표작성시 확인 필요" }, "5": { "ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name", - "search": "화단의 꽃들", + "search": "호수의 시원한 전경", "type": "video.Text", - "value": "화단의 꽃들", + "value": "호수의 시원한 전경", "point": 3 }, "6": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", - "search": "화단의 꽃들", + "search": "호수의 시원한 전경", "type": "video.Text", - "value": "돋움체", + "value": "굴림체", "point": 2 }, "7": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", - "search": "화단의 꽃들", + "search": "호수의 시원한 전경", "type": "video.Text", "value": "110", "point": 2 }, "8": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", - "search": "화단의 꽃들", + "search": "호수의 시원한 전경", "type": "video.Text.Color", - "value": "ff531b", + "value": "f4511e", "point": 2, "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" }, "9": { "ele": "//CROwneUnit[{index}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", - "search": "화단의 꽃들", + "search": "호수의 시원한 전경", "type": "video.Location", - "value": ["0.38333333", "0.92962962"], + "value": ["0.3125", "0.92962962"], "point": 2, "desc": "정답 파일의 자막 좌표를 기준으로 프로그램 내부적으로 0.1까지 오차를 허용한다" }, "10": { "ele": "", - "search": "화단의 꽃들", + "search": "호수의 시원한 전경", "type": "video.StartTime", "value": 170, "point": 2, @@ -269,9 +269,9 @@ }, "11": { "ele": "", - "search": "화단의 꽃들", + "search": "호수의 시원한 전경", "type": "video.Length", - "value": 150, + "value": 180, "point": 2, "desc": "내부적으로 자막의 시작시간과 길이를 계산" }, @@ -286,7 +286,7 @@ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", "type": "imageLength", "media": "이미지3.jpg", - "value": "180", + "value": 150, "point": 2 }, "14": { @@ -294,8 +294,8 @@ "type": "imageOverlay", "media": "이미지3.jpg", "value": { - "ID": "67", - "VID102": "40" + "ID": "173", + "VID101": "300" }, "point": 2, "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" @@ -305,8 +305,8 @@ "type": "clipTransition", "media": "이미지3.jpg", "value": { - "ID": "10", - "Range": "490:550", + "ID": "21", + "Range": "500:530", "Type": "2" }, "point": 2, @@ -316,7 +316,7 @@ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", "type": "imageLength", "media": "이미지1.jpg", - "value": "180", + "value": 210, "point": 2 }, "17": { @@ -324,8 +324,8 @@ "type": "imageOverlay", "media": "이미지1.jpg", "value": { - "ID": "103", - "VID102": "7" + "ID": "67", + "VID102": "60" }, "point": 2, "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" @@ -335,8 +335,8 @@ "type": "clipTransition", "media": "이미지1.jpg", "value": { - "ID": "12", - "Range": "670:730", + "ID": "10", + "Range": "680:740", "Type": "2" }, "point": 2, @@ -346,7 +346,7 @@ "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", "type": "imageLength", "media": "이미지2.jpg", - "value": "150", + "value": 180, "point": 2 }, "20": { @@ -354,8 +354,8 @@ "type": "imageOverlay", "media": "이미지2.jpg", "value": { - "ID": "102", - "VID101": "3" + "ID": "184", + "VID103": "50" }, "point": 2, "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" @@ -365,8 +365,8 @@ "type": "clipTransition", "media": "이미지2.jpg", "value": { - "ID": "0", - "Range": "850:880", + "ID": "7", + "Range": "890:920", "Type": "2" }, "point": 2, @@ -374,58 +374,58 @@ }, "22": { "ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "호수공원의 추억 (Memories of Lake Park)", "type": "video.Text", - "value": "아름다운 꽃 축제 (Happy Flower Festival)", + "value": "호수공원의 추억 (Memories of Lake Park)", "point": 3 }, "23": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "호수공원의 추억 (Memories of Lake Park)", "type": "video.Text", "value": "궁서체", "point": 2 }, "24": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "호수공원의 추억 (Memories of Lake Park)", "type": "video.Text", - "value": "140", + "value": "150", "point": 2 }, "25": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "호수공원의 추억 (Memories of Lake Park)", "type": "video.Text.Color", - "value": "ec008c", + "value": "1976d2", "point": 2, "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" }, "26": { "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "호수공원의 추억 (Memories of Lake Park)", "type": "video.Text.Outline", "value": { - "width": "40", - "color": "fff9c4" + "width": "25", + "color": "cdf9fc" }, "point": 2, "desc": "두께는 XML에서는 소수점으로 표기되지만, 프로그램 내부적으로 변환하여 사용하므로 현재 파일에서는 정수로 작성" }, "27": { "ele": "//CROwneUnit[{index}]/CRCUnitArr", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "호수공원의 추억 (Memories of Lake Park)", "type": "opening.Text.FadeInEffect", "value": { - "ID": "14", - "PlayTime": "2" + "VID505": "15", + "VID507": "2" }, "point": 3, "desc": "오프닝자막의 나타나기 효과를 확인하는 문항. id속성은 VID505, playtime속성은 VID507으로 XML 내부에 표기되어 있다." }, "28": { "ele": "", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "호수공원의 추억 (Memories of Lake Park)", "type": "opening.StartTime", "value": 0, "point": 2, @@ -433,7 +433,7 @@ }, "29": { "ele": "", - "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "search": "호수공원의 추억 (Memories of Lake Park)", "type": "opening.Length", "value": 120, "point": 2 @@ -449,7 +449,7 @@ "ele": "//CRTrackList[@Name='오디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']", "type": "audio.EndTime", "media": "음악.mp3", - "value": "870", + "value": 900, "point": 2 }, "32": { diff --git a/회차별채점자료/2506/json_채점기준표/DPI_2506C.json b/회차별채점자료/2506/json_채점기준표/DPI_2506C.json new file mode 100644 index 0000000..480b7e7 --- /dev/null +++ b/회차별채점자료/2506/json_채점기준표/DPI_2506C.json @@ -0,0 +1,746 @@ +{ + "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": "none", + "point": 0 + }, + "5": { + "ele": "$.children[?(@.name=='Happy Lake Park')].name", + "value": "Happy Lake Park", + "point": 4 + }, + "6": { + "ele": "$.children[?(@.name=='Happy Lake Park')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 2 + }, + "7": { + "ele": "$.children[?(@.name=='Happy Lake Park')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 2 + }, + "8": { + "ele": "$.children[?(@.name=='Happy Lake Park')].text.font.sizes[0]", + "value": 48, + "point": 2 + }, + "9": { + "ele": "$.children[?(@.name=='Happy Lake Park')].text.font.colors[0]", + "type": "color", + "value": "bd04bb", + "point": 2 + }, + "10": { + "ele": "none", + "point": 0 + }, + "11": { + "ele": "none", + "point": 0 + }, + "12": { + "ele": "none", + "point": 0 + }, + "13": { + "ele": "$.children[?(@.name=='행복한 호수공원')].name", + "value": "행복한 호수공원", + "point": 4 + }, + "14": { + "ele": "$.children[?(@.name=='행복한 호수공원')].text.font.names[0]", + "type": "font", + "value": "GungsuhChe", + "point": 2, + "desc": { + "돋움체": "DotumChe", + "궁서체": "GungsuhChe", + "굴림체": "GulimChe", + "휴먼옛체": "YetR" + } + }, + "15": { + "ele": "$.children[?(@.name=='행복한 호수공원')].text.font.sizes[0]", + "value": 36, + "point": 2 + }, + "16": { + "ele": "$.children[?(@.name=='행복한 호수공원')].text.font.colors[0]", + "type": "color", + "value": "146c08", + "point": 2 + }, + "17": { + "ele": "none", + "point": 0 + }, + "18": { + "ele": "none", + "point": 0 + }, + "19": { + "ele": "none", + "point": 0 + }, + "20": { + "ele": "none", + "point": 0 + }, + "21": { + "ele": "none", + "point": 0 + }, + "22": { + "ele": "none", + "point": 0 + }, + "23": { + "ele": "none", + "point": 0 + }, + "24": { + "ele": "none", + "point": 0 + }, + "25": { + "ele": "none", + "point": 0 + }, + "26": { + "ele": "none", + "point": 0 + }, + "27": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "size", + "value": { + "width": 65, + "height": 45 + }, + "point": 4 + }, + "28": { + "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": "클립의 ClipIndex값이 -1인 경우와 길이가 5프레임 이하인 경우는 제외한다." + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1]/@Speed", + "type": "oneAnswer", + "value": { + "speed": "110" + }, + "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": "start: 시작시간 / end: 재생시간( 12.20 = 12*30 + 20 = 380 )" + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "effect", + "media": "동영상.mp4", + "value": { + "ID": "44", + "VID100": "10", + "VID103": "1.2" + }, + "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": "f4511e", + "point": 2, + "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" + }, + "9": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "search": "호수의 시원한 전경", + "type": "video.Location", + "value": ["0.3125", "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": 180, + "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": 150, + "point": 2 + }, + "14": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "imageOverlay", + "media": "이미지3.jpg", + "value": { + "ID": "173", + "VID101": "300" + }, + "point": 2, + "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" + }, + "15": { + "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", + "type": "clipTransition", + "media": "이미지3.jpg", + "value": { + "ID": "21", + "Range": "500:530", + "Type": "2" + }, + "point": 2, + "desc": "오버랩일 경우 Type속성값 16으로 변경" + }, + "16": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", + "type": "imageLength", + "media": "이미지1.jpg", + "value": 210, + "point": 2 + }, + "17": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "imageOverlay", + "media": "이미지1.jpg", + "value": { + "ID": "67", + "VID102": "60" + }, + "point": 2, + "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" + }, + "18": { + "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", + "type": "clipTransition", + "media": "이미지1.jpg", + "value": { + "ID": "10", + "Range": "680:740", + "Type": "2" + }, + "point": 2, + "desc": "오버랩일 경우 Type속성값 16으로 변경" + }, + "19": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']/@Length", + "type": "imageLength", + "media": "이미지2.jpg", + "value": 180, + "point": 2 + }, + "20": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex='{CRClipIndex}']//CRFilter", + "type": "imageOverlay", + "media": "이미지2.jpg", + "value": { + "ID": "184", + "VID103": "50" + }, + "point": 2, + "desc": "오버레이 속성 키값(VID10X) 확인하고 변경" + }, + "21": { + "ele": "//CRTransFilter[@ClipIndex='{CRTrackClipIndex}']", + "type": "clipTransition", + "media": "이미지2.jpg", + "value": { + "ID": "7", + "Range": "890:920", + "Type": "2" + }, + "point": 2, + "desc": "오버랩일 경우 Type속성값 16으로 변경" + }, + "22": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr/@Name", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text", + "value": "호수공원의 추억 (Memories of Lake Park)", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text", + "value": "궁서체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text", + "value": "150", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text.Color", + "value": "1976d2", + "point": 2, + "desc": "컬러값은 RGB로 입력한다, [대소문자, #]허용 (#FFFFFF, ffffff 두 값 모두 허용)" + }, + "26": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "video.Text.Outline", + "value": { + "width": "25", + "color": "cdf9fc" + }, + "point": 2, + "desc": "두께는 XML에서는 소수점으로 표기되지만, 프로그램 내부적으로 변환하여 사용하므로 현재 파일에서는 정수로 작성" + }, + "27": { + "ele": "//CROwneUnit[{index}]/CRCUnitArr", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "opening.Text.FadeInEffect", + "value": { + "VID505": "15", + "VID507": "2" + }, + "point": 3, + "desc": "오프닝자막의 나타나기 효과를 확인하는 문항. id속성은 VID505, playtime속성은 VID507으로 XML 내부에 표기되어 있다." + }, + "28": { + "ele": "", + "search": "호수공원의 추억 (Memories of Lake Park)", + "type": "opening.StartTime", + "value": 0, + "point": 2, + "desc": "오프닝자막의 시작시간 value 속성만 수정" + }, + "29": { + "ele": "", + "search": "호수공원의 추억 (Memories of Lake 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": 900, + "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": "Museum", + "point": 5, + "desc": "Museum 레이어가 있는지 여부 체크" + }, + "4": { + "type": "layer.Effects", + "ele": "//Layer[Name[@value='{search}']]/Effects/Item", + "search": "Museum", + "value": { + "name": "선명하게", + "option": { + "양": "10" + } + }, + "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": "ROUNDED_RECTANGLE", + "point": 3, + "desc": "레이어 쉐이프 타입이 타원인지 체크" + }, + "8": { + "type": "shape.size", + "ele": "//Layer//op_points", + "value": { + "width": 90, + "height": 20 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "9": { + "type": "shape.color", + "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "FF0000", + "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": "RECTANGLE", + "point": 3, + "desc": "모서리가 둥근 사각형 : ROUNDED_RECTANGLE / 사각형 : RECTANGLE" + }, + "6": { + "type": "shape.size", + "ele": "//Layer//op_points", + "value": { + "width": 380, + "height": 70 + }, + "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": "00C9BA", + "endColor": "A6A600" + }, + "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": "36", + "point": 3 + }, + "12": { + "type": "text.color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "151DE8", + "point": 3 + }, + "13": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "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": "ELLIPSE", + "point": 3, + "desc": { + "사각형": "RECTANGLE", + "원형/타원형": "ELLIPSE", + "17~20 문항 option값 변경":"" + } + }, + "17": { + "type": "clipping.size", + "ele": "//Layer//Shape[shape_type/@value='{option}']//op_points", + "option": "ELLIPSE", + "value": { + "width": 180, + "height": 180 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='{option}']/outline_peninfo/Width/@value", + "option": "ELLIPSE", + "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": "ELLIPSE", + "value": "FF3030", + "point": 3, + "desc": "채우기:secondary_color, 외곽선:primary_color" + }, + "20": { + "type": "shadow", + "ele": "//Layer//Shape[shape_type/@value='{option}']", + "option": "ELLIPSE", + "value": { + "shadow": true, + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + }, + "21": { + "type": "none", + "ele": "", + "point": 0, + "desc": "기본설정" + }, + "22": { + "type": "none", + "ele": "", + "point": 0, + "desc": "파일명 확인" + } + } +}