From 38a323c0b0c67b71646b9df1b2bad5c6e631a7dd Mon Sep 17 00:00:00 2001 From: dragdra Date: Fri, 2 May 2025 17:36:01 +0900 Subject: [PATCH] =?UTF-8?q?2504=ED=9A=8C=20=EC=B1=84=EC=A0=90=EA=B8=B0?= =?UTF-8?q?=EC=A4=80=ED=91=9C/=EC=9E=90=EB=A3=8C=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 00_DIC_2504A_TEST.xlsx | Bin 0 -> 21982 bytes 00_DIC_2504B_TEST.xlsx | Bin 0 -> 21850 bytes 00_DIC_2504C_TEST.xlsx | Bin 0 -> 21982 bytes 250502_DIC_2504A_채점결과.xlsx | Bin 0 -> 101110 bytes 250502_DIC_2504B_채점결과.xlsx | Bin 0 -> 179700 bytes 250502_DIC_2504C_채점결과.xlsx | Bin 0 -> 115390 bytes 250502_DPI_2504B_채점결과.xlsx | Bin 0 -> 23318 bytes DIC_2503A_layer.json | 689 +++++++++++++++++ DIC_2503B_clipping.json | 690 +++++++++++++++++ DIC_2503C_layer.json | 688 +++++++++++++++++ DIC_2504A.json | 694 +++++++++++++++++ DIC_2504B.json | 691 +++++++++++++++++ DIC_2504C.json | 695 +++++++++++++++++ copyFiles.py | 23 +- psdExport_2.js | 17 +- samples/DIC(gompic).json | 149 ---- .../dpi_01_000000_홍길동.xml | 84 -- .../dpi_02_000000_홍길동.xml | 195 ----- z.xbook | 2 +- .../0000/excel_채점결과/250410_DIC_0000A_채점결과.xlsx | Bin .../0000/excel_채점결과/250410_DIC_0000B_채점결과.xlsx | Bin .../0000/excel_채점결과/250410_DIC_0000C_채점결과.xlsx | Bin .../0000/excel_채점결과/250411_DIC_0000A_채점결과.xlsx | Bin .../0000/excel_채점결과/250411_DIC_0000B_채점결과.xlsx | Bin .../0000/excel_채점결과/250411_DIC_0000C_채점결과.xlsx | Bin .../0000/excel_채점결과/250414_DIC_0000A_채점결과.xlsx | Bin .../0000/excel_채점결과/250415_DIC_0000A_채점결과.xlsx | Bin .../0000/excel_채점결과/250415_DIC_0000B_채점결과.xlsx | Bin .../0000/excel_채점결과/250415_DIC_0000C_채점결과.xlsx | Bin .../0000/json_채점기준표/0415/DIC_0000A.json | 693 +++++++++++++++++ .../0000/json_채점기준표/0415/DIC_0000B.json | 698 +++++++++++++++++ .../0000/json_채점기준표/0415/DIC_0000C.json | 693 +++++++++++++++++ .../2504/excel_채점기준표/DIC_2504A.xlsx | Bin 0 -> 18899 bytes .../2504/excel_채점기준표/DIC_2504B.xlsx | Bin 0 -> 18923 bytes .../2504/excel_채점기준표/DIC_2504C.xlsx | Bin 0 -> 18873 bytes .../2504/excel_채점기준표/DPI_2504B.xlsx | Bin 0 -> 18511 bytes 회차별채점자료/2504/hwp_문제/DIC_2504A.hwp | Bin 0 -> 1864192 bytes 회차별채점자료/2504/hwp_문제/DIC_2504B.hwp | Bin 0 -> 1897984 bytes 회차별채점자료/2504/hwp_문제/DIC_2504C.hwp | Bin 0 -> 3027968 bytes 회차별채점자료/2504/hwp_문제/DPI_2504B.hwp | Bin 0 -> 1842176 bytes .../2504/json_채점기준표/채점기준표/DIC_A.json | 492 ++++++++++++ .../2504/json_채점기준표/채점기준표/DIC_B.json | 488 ++++++++++++ .../2504/json_채점기준표/채점기준표/DIC_C.json | 492 ++++++++++++ .../2504/json_채점기준표/채점기준표/DPI_B.json | 726 ++++++++++++++++++ 44 files changed, 8459 insertions(+), 440 deletions(-) create mode 100644 00_DIC_2504A_TEST.xlsx create mode 100644 00_DIC_2504B_TEST.xlsx create mode 100644 00_DIC_2504C_TEST.xlsx create mode 100644 250502_DIC_2504A_채점결과.xlsx create mode 100644 250502_DIC_2504B_채점결과.xlsx create mode 100644 250502_DIC_2504C_채점결과.xlsx create mode 100644 250502_DPI_2504B_채점결과.xlsx create mode 100644 DIC_2503A_layer.json create mode 100644 DIC_2503B_clipping.json create mode 100644 DIC_2503C_layer.json create mode 100644 DIC_2504A.json create mode 100644 DIC_2504B.json create mode 100644 DIC_2504C.json delete mode 100644 samples/DIC(gompic).json delete mode 100644 samples/멀티미디어-000000-홍길동/dpi_01_000000_홍길동.xml delete mode 100644 samples/멀티미디어-000000-홍길동/dpi_02_000000_홍길동.xml rename 250410_DIC_0000A_채점결과.xlsx => 회차별채점자료/0000/excel_채점결과/250410_DIC_0000A_채점결과.xlsx (100%) rename 250410_DIC_0000B_채점결과.xlsx => 회차별채점자료/0000/excel_채점결과/250410_DIC_0000B_채점결과.xlsx (100%) rename 250410_DIC_0000C_채점결과.xlsx => 회차별채점자료/0000/excel_채점결과/250410_DIC_0000C_채점결과.xlsx (100%) rename 250411_DIC_0000A_채점결과.xlsx => 회차별채점자료/0000/excel_채점결과/250411_DIC_0000A_채점결과.xlsx (100%) rename 250411_DIC_0000B_채점결과.xlsx => 회차별채점자료/0000/excel_채점결과/250411_DIC_0000B_채점결과.xlsx (100%) rename 250411_DIC_0000C_채점결과.xlsx => 회차별채점자료/0000/excel_채점결과/250411_DIC_0000C_채점결과.xlsx (100%) rename 250414_DIC_0000A_채점결과.xlsx => 회차별채점자료/0000/excel_채점결과/250414_DIC_0000A_채점결과.xlsx (100%) rename 250415_DIC_0000A_채점결과.xlsx => 회차별채점자료/0000/excel_채점결과/250415_DIC_0000A_채점결과.xlsx (100%) rename 250415_DIC_0000B_채점결과.xlsx => 회차별채점자료/0000/excel_채점결과/250415_DIC_0000B_채점결과.xlsx (100%) rename 250415_DIC_0000C_채점결과.xlsx => 회차별채점자료/0000/excel_채점결과/250415_DIC_0000C_채점결과.xlsx (100%) create mode 100644 회차별채점자료/0000/json_채점기준표/0415/DIC_0000A.json create mode 100644 회차별채점자료/0000/json_채점기준표/0415/DIC_0000B.json create mode 100644 회차별채점자료/0000/json_채점기준표/0415/DIC_0000C.json create mode 100644 회차별채점자료/2504/excel_채점기준표/DIC_2504A.xlsx create mode 100644 회차별채점자료/2504/excel_채점기준표/DIC_2504B.xlsx create mode 100644 회차별채점자료/2504/excel_채점기준표/DIC_2504C.xlsx create mode 100644 회차별채점자료/2504/excel_채점기준표/DPI_2504B.xlsx create mode 100644 회차별채점자료/2504/hwp_문제/DIC_2504A.hwp create mode 100644 회차별채점자료/2504/hwp_문제/DIC_2504B.hwp create mode 100644 회차별채점자료/2504/hwp_문제/DIC_2504C.hwp create mode 100644 회차별채점자료/2504/hwp_문제/DPI_2504B.hwp create mode 100644 회차별채점자료/2504/json_채점기준표/채점기준표/DIC_A.json create mode 100644 회차별채점자료/2504/json_채점기준표/채점기준표/DIC_B.json create mode 100644 회차별채점자료/2504/json_채점기준표/채점기준표/DIC_C.json create mode 100644 회차별채점자료/2504/json_채점기준표/채점기준표/DPI_B.json diff --git a/00_DIC_2504A_TEST.xlsx b/00_DIC_2504A_TEST.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..331e81e2ecc1ed2dbb3e88c9c8532c3440bf96d3 GIT binary patch literal 21982 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�F z-rrWezg5@g4G>gF>PSyVQSIGC62^(AcCRCy97Ro(J|l4A>7t~UcXThGNUuOq)j{dz z9o@|*aw$+$iIRTa(fxcPmjXqVDCy`O-O(pcBQwYsEN|O zofA(NCB40?d;3JP0}ATklmOb5-j1TCmE;j|j}uSVN_u-&_x6c21{76hm)_phy?r8Q z0Y#N4>Fr(J+Y7UA+QCY1?@Dh+QL~jE**WoavrBL9>fSz)jew%6gVNi(y0}o$Qe#Im!)Y%awERu7BB4G0ltWF?7b)oBCH`4FKOiri&RGm5p2cu z6)j&|h`*>UTQrJX5F)=K*H(Rg^Tma)yz;4q1^WB6SoJA>$^77pJ(-j%TkARZBCHZ> z%RQs)3%5lJOOoPa`i8!SZ7w$=*BXlNwZ%I2xjp$^^t`g{3#|FN7K^Z=THAcgFxIoa z@}=#|O${ z_{DAJjUDWR$2GR`4fsZRBMv<`*?0MlKHR{v%ue7P4c)%*5$uOz>GG!F7v2=+fX{ptNP<)963ZrX4bkXm-vN6dMCugjROy+ z{dnmmtc40=9Jw2{FZb+TZ^g2$dY_q2y}jCX>TIR6TyI&eerw5EYOY$X-{u1#WPusO zx|R;l77Y*WIB@V;9zJ#L?}}mLUFyR!9t&gI>P}0qviSzu&o0;LBG(RU++1xe+bew~ zYQET=cfO*#kwrlQMoqU-@`k14%+zGV&BxYrJ8Pi*jPv*xu0OJ{Kz}J{vlYpQ+cAIEeAN@tj{l}Uc>nt^V{OIw@NeJv@XdGd zfdg%ap(R^F$eN1+Kd*zf7-Zb}i6ffTpT7IVf8NCDB=q;w2$kY^k{^*HNidCyT_aim zz0`3hxj$l+IdbY@jxKo&Mz+m|Q)Fjh6pzBl&Pc&zJg-8t&qx7I9p85BYL&3fqe>%q z#MNn}>MZSpV{I~5&UC3fDdg|HAN=zw9FG2e22PjTH|@-WPtb+f$mhg~xwXVK)Lx0h zLP~9a<-5hUutf)RE}h=9c|;g~`e?mTtX#i_eQWqs`;cJd$Kir&Rg=-{4HZ3NXH49%aT{0MDX~$&v5&mXdxyW!FdHnDu+iE!JVKohN z(QIIM7M=UFW?R@vHNo`Bq%&E^~x))^o1R4kHh&hcgS<&-*~v8;4i$Jdb5cKDD!w_)?bHTu--g8+#Pp#bI9 zYE46p@}Qprmq0p4`(l1C9-nu0ico^b<)6BN+BPiJ;>3WSQnsw+ad-0m%#-{r_@>X9qE$wE5FKFbD$N^ z!PKSbZ#botvnRQf;%Mp2`kNNX{A)Y83fbwTIkdYNEK;lC|t&zw}G&|e#wIA$mw4c8Ay=$-TuCJX$=u*?&Gt+l_ zx;x!H`;ma;*alfdAV_RPkSyf^DG?BGumL}qKY%x$g2V$a{)n)zWeIoz@xbp?b$4~u z^z_W`U4a6&wRftk&pCDK)cKt{-Bn$OH$V08&n{&D{mDZwz4g~Wwy;2dzlh3nuW>hW zytr`|L?^uCAf?R zjgVO|fCn~F^1345a!Jz<+Qo1n+-5 zbesf2Su}8xjT)JRSH%tfW0GxZjdEq0*QrbbBRNtLe%avvR_f5YP95Up!o!H>))3cK zCTL%4^E4I*PQq-KFsa2Tt;zIgD9*Nds5tx5r(Zt#=g%xG(BIDpXV*=6buVXYT$b?f zH8zhI+7UYgdPbgbz!7u(n&Gn%T=;43pvEyD_|5fH_?`zp@ROJ-EH64D@Hh$wpuyJc z6O(@8i+IP2j8o>pcU|8O&W@dP__N321UEKnOZ-3b;6~2mB~y3{eEa;rlrLqlPnx{V zXwb_WHTT=A%e%RJPT(bzbbEVyJ9}m>j}tJ~e2Ss)U{N!dF~ou#%) zUy$FL(0O%xd%Lrm>LP@4B2jEl(620Y+gnYAo)ZcB&IEmXduwN>tI%^ILEoLA-(Ozs zwpDsgH1u5mWP+LobbmjUo|E(g??x&43dmQMQgTTJZ^*rin&=09GR@aU>|PMN3mJwT#8zSO988RS3%KP~3?|uCC8^*_P zzy8h(Z@%-w-@fzWi|@SfmqM1pc!T+aBIAeO`GfnfJ#T#Q#XQm@?&@8#Ku$3nQ=Q9p>NzUs^(5F zx*W&xkhuy68$x!8=)Gj95I%LmyfV6NM>XD^2*IO_@bU3IMc1QYG)~--mTwM63gJNz zc-ui#YJi*6R>8u@V}DTIcr-53-Dd2xtnD4_G60J5W@T4nlXvQHffQJAvZAM;Bh7 zIXucBq$`nne-I0Y zC=!yHj80RsfAbHkJhDSq2FHlVW7&(Yj(Sz6s1H7|Y;?eYp6v6=54ICoC-zXuF{xEO3mGx$yMV)QE4sjGMSh^ zm&4?F*HD>T6Pb;HdK1e#6Jimx7&o|CCYO9@Qr)F3z z+^F^Oq>JJx#Gu8L3o>tjm!eh@39p@rMGjKg66PIZu491BQ9S!X> zqvwsI+YG}Gn^J#lH^vJK4rsc-+cmN_zoo|3G}08`X>mGH&%AKR(r8I?tkiailE+ra+D(8lt`9OodN^@ z(}{}!GdiW^66C*`{c{z$wbaB#@N@QTjx2VBZpbXDouNXR{8m@frmm>MJQHwXt`!k$ zqQ}inrW{6bvd5^*^O+FufeiWw^Pd}8p2OXkCe-8LHe#!Rp%9y>Qo%!isK+WjJS980{bE@da;;rh1bzD3{iUi zZKrRz_IdXFky}DQNUV@#DKe)fHgdF_u~qiapfaZP#42XXoVhuhIp^RlBV^~y{DoSX z0IZLtftw!fKre!<=rw^Wvy|sQh{@(qzT9M`Pd@XSOgt!74%8J)mYi3cEVUGjH|cm- z;fxp_y^eVN#iS!Vox7~I9Q@3`Km5uUA6{6XzemM#aLgCEX)*cg3&C8*5iM8GztO&&{qbmjl*EP=jD1L@0Tfk+_@TWN zoo>w#J27?w8?OUC`{i+v{OY@J{my&8`*P#mx4w=aL(~n2;`jY;y&wvsk@$V@<=+;C zI2OM@{LVL09*%}ojm>oeg`y2rY_7*&5ui8u(yA4BL1geTOdpbIm0VElV5uN|S>4CN zg?AyUIiGM$Q6T_I-XL1wKX~gv@gP@#P(&4*>zIX*>ihe+pvjHOWWtS_kIgN-3xaM2 zHRi1g6OWC&T`ssm9B8)}L^d|l6bC|7ZLWJxpWGH%-H?8hAjH4DAW4D|3bxAzfzLb? z8yQDhfLO~(v#aO&itO`#VSq9Jk`ZXEsR)JAqL3#pNPbb8ko~}7jq`rm7z;!1;;Hed z=U@Su_Wh(|%UeY|h0Z8l$(2fXK0HOtSenWO_r|V=G^?Z=kZGSw!|*9SVLi{`32EL6 zjADz)>^Q%g#PuH{^>L8zp$`Ce?KpR zQ0YFStH+~U+_i-x<7_hu-WP8%+ zh8*1dJ~>Q4(89k4;7;yjj2O=+j5F7!47Ibk(rPZX2$F_1j)ACW#SK2=aT2$DAE^u(Hg`(zk^TR)X>!Vk{x867E6Bn()U07)8E?8IT~mnZ-v5^Xax!vS~2Tp&cN?)tM@N-i1uGZmeeHOcDz*^*at$%urCnkp1 zQU)q~3`JGYswPMyn60B(0H6vlvwr{0*Y1D&_w^QtVY;poX~;~9x;7`ErV-4cs|1^= zqN!Qe(WVj1Azb3kQ~}kj>wwb;<`6C+XR4TL*5#;+I01qx151dRDu$YM9b+279BN9G znJSE$bsc6Ps8Um+%2Z*~tn07>0ZEc0sCvIdk*UI{S=V6%f(l7Zi6azM-_&u$X{YMc zl%PRTm1HhyfZ@c`MM=OkCjc`sIjI!02ec^>gQBLWG`Mg)jbaYz5;9F4GNz6hjbaYz z5;K&H6yhgBi4Gc2RCr@kf(AuRl#UusJbk<*M4CE8OdTVjsPadNk*1CjQwIqsszgbU zGMwX2#lSxZL4n@t#I^;BpITV#BZ0RU0&80v^%C@Fx+m^UPv8ZipBAMc}Q`54x z#2AXIB;8Fp?bP_!mUu!@m85$qr=2cIVyCTQr!|oifq)w-pIVhsZA<8&sOlt5D<(Nk z3zJWgBw^B4VbYpNfIvVxN%N^XNl4)91XU;9(LhioNxFYqb^q2x0tA98Nz(hml_cruZPnA^nR?6yMTMx2baE6`Lz#Mj=EPHN-jQC8q9#g?lW+u1JYAG@^N#N3 z6R8a-syZnByrcX1L>>c*DpAtWJG!Hrx~GGpN|f~Uj_&Cbc?>A3L`het7vqIQ4bGtZ zIw-0{Nnh{izCMx1fTBv2boP$!?56JRpr{fhy&YdZsU4iiP(V>3sw=%6MNO3M?VNb3 zi*}{Aqo|3}y`2+J4SQYb?I>!ZWT+It;l$ImlHT6cy?r9l07aFpq_=lFp?LX4kWJPCVW0(%ZYbw>Ncf2Srr} zrMGu=Z*S?b9TXL!mZi6&sCKZWdpjqd+QDV%?I>!ZbZ_Ux(?v;dU)H_7C5K9QyGAiP z3B>#P>}?&2s-mSyAZIw;T$ZL4P9nac7B9=)0lr3Y?7b)oBD}vZUec-+7Kn}#BG`)Q z3s(MKKmM||WY8#bL5TcyW*f|6+ z@QXXl8#~y8j%#e88}Lo)MjU!>vhVWUbhv>fk)6Oh8oGVqBiM_?(xpYg$t!k(5&wvq z%VKd1zu`qIa3cC>6@qAm@c>_z(?x^#x1n^HSM|rqIC6-L%&c`&F0TuV^iGI}8wVat zd*RYcSPK=#IC3{?U+vkw-il>g^*%G5dV96&)Y(dBx!$r`{nnDT)LgY%zsUzc$O1El zbuAs9EgBwL?RW4=96mGc?}}mLUFyR!9t&gIW=_kVviSzu&o0;LBG(S<%Uo?NnJaxI zYQE5%cfO*#kwrlQMoqUc@`k14%+zGV%}3UAJ8Pi*tn=uXo_J_sf&Nm^W~+e@wp$~U za&4f!w#Cs*v%?7ZvYn^+xd6vQH-0ufnj>E*MYQ89kEsvd|Ncu@*DyZ#tJgnx<86Fg zKwD90xs(vH=AyvQ%An|3WuY=pN7-r_Dwr;^$EHV8~L0#F}IeuhT1D} zP)DiluYIT17PiM=&ZU!cHjfCyPadr|ik0g(uxAXPNgp!IfJjr5wNvcE#73#u{R-wW z_?Sxv=IQ<+i)fo@PMB&8ca$1)9Vq+G)KS9PgqpnPXi#gSA;(;cZ9n+NZ#?!z z%qH~rSkcW0=npohSm7E8kxh%qWzE8uLzfIjS=uofeuTf-RxUCeM;<>o$+j9!dQeQm zTr?Zl8AWF95I|;vFFpiH;~YgMCI~NEA=AzYBa5j zNQ!9A&)ixB|E@UyXi5X(;ia+%)h&#WHF=-oV#>SF8-<#Q@L@Mj9HaVjj*!0fQ&bWh zRA0_9aQmekRA0{FjLJFA>vX4_=WHqu-6`j}7nb+sUg%8g48K*@{|cUDiUCkRO*4M0 zteFa)(AKS1gbCd(w*s~#0^7=v78y(YIE@jM1UVX&jIjx%irvrZ|zZH}nMP zQmtvIQ6BVD;1WpZXkX0l#iQ%4PZ3J+xcnJ<@GacMlj|Nt1ukqxgK|Uv7=#2V9pJe>z{^TQ| t&aLP2lKVez6u2`m>g;+3D%oFrvNRt(y!qolK}3(>|F6O+{{A*y{Wm+%Zvy}T literal 0 HcmV?d00001 diff --git a/00_DIC_2504C_TEST.xlsx b/00_DIC_2504C_TEST.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b48358b6ad58163518bb75e61faa2f6611d9aae9 GIT binary patch literal 21982 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 literal 0 HcmV?d00001 diff --git a/250502_DIC_2504A_채점결과.xlsx b/250502_DIC_2504A_채점결과.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..43e79e10f86e6f4b7234fcff584c986ec403095d GIT binary patch literal 101110 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 DiKYyl literal 0 HcmV?d00001 diff --git a/250502_DIC_2504B_채점결과.xlsx b/250502_DIC_2504B_채점결과.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..58e4cea50778d6b4c41868fc43a50834aa65cf20 GIT binary patch literal 179700 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 literal 0 HcmV?d00001 diff --git a/250502_DIC_2504C_채점결과.xlsx b/250502_DIC_2504C_채점결과.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4ffa1c74f94705e50e1094cd729e3afd4adc2cf7 GIT binary patch literal 115390 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 literal 0 HcmV?d00001 diff --git a/250502_DPI_2504B_채점결과.xlsx b/250502_DPI_2504B_채점결과.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ee717958836f8bda7a4d4009b62f86c5b3a85efd GIT binary patch literal 23318 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'1']/CRTrackClip[1][not(@ClipIndex='-1')]", + "point": 2 + }, + "31": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='750']", + "point": 2 + }, + "32": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']", + "point": 2 + }, + "33": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "4": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "350" + ], + "point": 5, + "desc": "캔버스 사이즈 650*350" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "자유 변형 문항은 채점 불가" + }, + "3": { + "type" : "isExist", + "ele": "//Layer/Name/@value", + "value": "Tracking", + "point": 5, + "desc": "Tracking 레이어가 있는지 여부 체크" + }, + "4": { + "type" : "multiValue", + "ele": "//Layer[Name[@value='{layer}']]/Effects/Item/Name/@value | //Layer[Name[@value='{layer}']]/Effects/Item/EffectData/{option}/@value", + "layer" : "Tracking", + "option" : "brightness", + "value" : [ + "30", + "밝기/대비" + ], + "point": 5, + "desc": "Tracking 레이어의 효과 체크" + }, + "5": { + "ele": "none", + "point": 6, + "desc": "올가미 도구/이미지 문항은 채점 불가" + }, + "6": { + "type" : "isExist", + "ele": "//Layer/Effects/Item/Name/@value", + "value" : "세피아", + "point": 6, + "desc": "세피아 효과가 있는지 여부 체크" + }, + "7": { + "type": "exact", + "ele": "//Layer/Shapes/Shape/shape_type/@value", + "value": "ELLIPSE", + "point": 3, + "desc": "레이어 쉐이프 타입이 타원인지 체크" + }, + "8": { + "type": "size", + "posX": "//Layer//op_points[Item]/Item[last()]/X/@value - //Layer//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer//op_points[Item]/Item[last()]/Y/@value - //Layer//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 80, + "height": 80 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "9": { + "type": "color", + "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "999999", + "point": 6, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "10": { + "type" : "multiValue", + "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value", + "value" : [ + "색 회피율", + "80" + ], + "point": 5, + "desc": "혼합모드(색 회피율, 불투명도 : 80)" + }, + "11": { + "ele": "none", + "point": 0, + "desc": "기본설정" + }, + "12": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "5": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "450" + ], + "point": 5, + "desc": "캔버스 사이즈 650*450" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "배경색 문항은 채점 불가" + }, + "3": { + "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']", + "point": 6 + }, + "4": { + "ele": "none", + "point": 5, + "desc": "가로방향 흐릿하게 문항은 채점 불가" + }, + "5": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "answer": "RECTANGLE", + "point": 6 + }, + "6": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 300, + "height": 50 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "7": { + "type": "gradient", + "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value", + "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value", + "value": { + "startColor": "347813", + "endColor": "041177" + }, + "point": 6 + }, + "8": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", + "value": "어린이 과학관", + "point": 5 + }, + "9": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", + "value": "돋움", + "point": 3 + }, + "10": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value", + "value": "True", + "point": 3 + }, + "11": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", + "value": "32", + "point": 3 + }, + "12": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "f04da5", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "13": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "point": 3 + }, + "14": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "ffe000", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "15": { + "ele": "//Layer[MaskOpType/@value='Clipping'][last()]", + "point": 6, + "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" + }, + "16": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "value": "RECTANGLE", + "point": 3 + }, + "17": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 150, + "height": 150 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "19": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "008878", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" + }, + "20": { + "type": "shadow", + "ele": { + "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]", + "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value", + "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", + "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", + "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" + }, + "value": { + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + }, + "21": { + "ele": "none", + "point": 0, + "desc": "기본설정" + }, + "22": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + } +} \ No newline at end of file diff --git a/DIC_2503B_clipping.json b/DIC_2503B_clipping.json new file mode 100644 index 0000000..80a6f8d --- /dev/null +++ b/DIC_2503B_clipping.json @@ -0,0 +1,690 @@ +{ + "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=='Time to stroll')].name", + "value": "Time to stroll", + "point": 4 + }, + "6": { + "ele": "$.children[?(@.name=='Time to stroll')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 2 + }, + "7": { + "ele": "$.children[?(@.name=='Time to stroll')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 2 + }, + "8": { + "ele": "$.children[?(@.name=='Time to stroll')].text.font.sizes[0]", + "value": 48, + "point": 2 + }, + "9": { + "ele": "$.children[?(@.name=='Time to stroll')].text.font.colors[0]", + "type": "color", + "value": "ff9000", + "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 + }, + "15": { + "ele": "$.children[?(@.name=='즐거운 산책 시간')].text.font.sizes[0]", + "value": 36, + "point": 2 + }, + "16": { + "ele": "$.children[?(@.name=='즐거운 산책 시간')].text.font.colors[0]", + "type": "color", + "value": "035b80", + "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": { + "videoStartTime": 180, + "openingStartTime": 0, + "1": { + "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path", + "type": "array", + "value": [ + "동영상.mp4", + "이미지2.jpg", + "이미지1.jpg", + "이미지3.jpg" + ], + "point": 4 + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='120']", + "point": 2 + }, + "3": { + "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)", + "type": "startend", + "start": "0", + "end": "360", + "point": 2 + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@Type='1'][@ID='86'][@VID100='5'][@VID101='30']", + "point": 3 + }, + "5": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "video", + "value": "숲 속으로 떠나는 여행", + "point": 3 + }, + "6": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "숲 속으로 떠나는 여행", + "type": "video", + "value": "바탕체", + "point": 2 + }, + "7": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "숲 속으로 떠나는 여행", + "type": "video", + "value": "110", + "point": 2 + }, + "8": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "숲 속으로 떠나는 여행", + "type": "video", + "value": "-16769281", + "point": 2 + }, + "9": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']", + "type": "video", + "search": "숲 속으로 떠나는 여행", + "value": [ + 0.28229165, + 0.92962962 + ], + "point": 2 + }, + "10": { + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "search": "숲 속으로 떠나는 여행", + "type": "videoIsExist", + "value": [179, 180], + "point": 2, + "desc": "출제 오류로 인해 두 가지 정답 모두 인정" + }, + "11": { + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "search": "숲 속으로 떠나는 여행", + "type": "video", + "value": "120", + "point": 2 + }, + "12": { + "existEle": "//CRClip[@Path='동영상.mp4']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute", + "type": "searchIndex", + "value": "1", + "point": 2 + }, + "13": { + "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "14": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", + "value": [ + "125", + "8" + ], + "point": 2 + }, + "15": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "96", + "450:540", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "16": { + "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "150", + "point": 2 + }, + "17": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID100']", + "value": [ + "99", + "50" + ], + "point": 2 + }, + "18": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "35", + "660:720", + "16" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "19": { + "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "150", + "point": 2 + }, + "20": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", + "value": [ + "102", + "8" + ], + "point": 2 + }, + "21": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "1", + "810:840", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "22": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "opening", + "value": "길가에 피어있는 꽃 Roadside flowers", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "길가에 피어있는 꽃 Roadside flowers", + "type": "opening", + "value": "휴먼편지체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "길가에 피어있는 꽃 Roadside flowers", + "type": "opening", + "value": "130", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "길가에 피어있는 꽃 Roadside flowers", + "type": "opening", + "value": "-9664512", + "point": 2 + }, + "26": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "search": "길가에 피어있는 꽃 Roadside flowers", + "type": "opening", + "value": [ + "0.40000001", + "-3868161" + ], + "point": 2 + }, + "27": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']", + "search": "길가에 피어있는 꽃 Roadside flowers", + "type": "opening", + "value": [ + "23", + "2" + ], + "point": 3 + }, + "28": { + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "search": "길가에 피어있는 꽃 Roadside flowers", + "type": "opening", + "value": 0, + "point": 2 + }, + "29": { + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "search": "길가에 피어있는 꽃 Roadside flowers", + "type": "opening", + "value": "120", + "point": 2 + }, + "30": { + "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]", + "point": 2 + }, + "31": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='740']", + "point": 2 + }, + "32": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='0'][@VID8='60']", + "point": 2 + }, + "33": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "4": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "350" + ], + "point": 5, + "desc": "캔버스 사이즈 650*350" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "자유 변형 문항은 채점 불가" + }, + "3": { + "type": "isExist", + "ele": "//Layer/Name/@value", + "value": "Tracking", + "point": 5, + "desc": "Tracking 레이어가 있는지 여부 체크" + }, + "4": { + "type": "multiValue", + "ele": "//Layer[Name[@value='{layer}']]/Effects/Item/Name/@value | //Layer[Name[@value='{layer}']]/Effects/Item/EffectData/{option}/@value", + "layer": "Tracking", + "option": "brightness", + "value": [ + "30", + "밝기/대비" + ], + "point": 5, + "desc": "Tracking 레이어의 효과 체크" + }, + "5": { + "ele": "none", + "point": 6, + "desc": "올가미 도구/이미지 문항은 채점 불가" + }, + "6": { + "type": "isExist", + "ele": "//Layer/Effects/Item/Name/@value", + "value": "세피아", + "point": 6, + "desc": "세피아 효과가 있는지 여부 체크" + }, + "7": { + "type": "exact", + "ele": "//Layer/Shapes/Shape/shape_type/@value", + "value": "ELLIPSE", + "point": 3, + "desc": "레이어 쉐이프 타입이 타원인지 체크" + }, + "8": { + "type": "size", + "posX": "//Layer//op_points[Item]/Item[last()]/X/@value - //Layer//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer//op_points[Item]/Item[last()]/Y/@value - //Layer//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 80, + "height": 80 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "9": { + "type": "color", + "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "999999", + "point": 6, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "10": { + "type": "multiValue", + "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value", + "value": [ + "색 회피율", + "80" + ], + "point": 5, + "desc": "혼합모드(색 회피율, 불투명도 : 80)" + }, + "11": { + "ele": "none", + "point": 0, + "desc": "기본설정" + }, + "12": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "5": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "450" + ], + "point": 5, + "desc": "캔버스 사이즈 650*450" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "배경색 문항은 채점 불가" + }, + "3": { + "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']", + "point": 6 + }, + "4": { + "ele": "none", + "point": 5, + "desc": "가로방향 흐릿하게 문항은 채점 불가" + }, + "5": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "answer": "ROUNDED_RECTANGLE", + "point": 6 + }, + "6": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 370, + "height": 60 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "7": { + "type": "gradient", + "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value", + "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value", + "value": { + "startColor": "347813", + "endColor": "041177" + }, + "point": 6 + }, + "8": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", + "value": "어린이 과학관", + "point": 5 + }, + "9": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", + "value": "돋움", + "point": 3 + }, + "10": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value", + "value": "True", + "point": 3 + }, + "11": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", + "value": "32", + "point": 3 + }, + "12": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "f04da5", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "13": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "point": 3 + }, + "14": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "ffe000", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "15": { + "ele": "//Layer[MaskOpType/@value='Clipping'][last()]", + "point": 6, + "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" + }, + "16": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "value": "RECTANGLE", + "point": 3 + }, + "17": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 150, + "height": 150 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "19": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "008878", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" + }, + "20": { + "type": "shadow", + "ele": { + "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]", + "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value", + "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", + "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", + "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" + }, + "value": { + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + }, + "21": { + "ele": "none", + "point": 0, + "desc": "기본설정" + }, + "22": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + } +} \ No newline at end of file diff --git a/DIC_2503C_layer.json b/DIC_2503C_layer.json new file mode 100644 index 0000000..a06da43 --- /dev/null +++ b/DIC_2503C_layer.json @@ -0,0 +1,688 @@ +{ + "0": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "none", + "point": 0 + }, + "5": { + "ele": "none", + "point": 0 + }, + "6": { + "ele": "none", + "point": 0 + }, + "7": { + "ele": "none", + "point": 0 + }, + "8": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "size", + "value": { + "width": 65, + "height": 45 + }, + "point": 4 + }, + "9": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "1": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "$.children[?(@.name=='나무집')].name", + "value": "나무집", + "point": 4 + }, + "5": { + "ele": "none", + "point": 0 + }, + "6": { + "ele": "$.children[?(@.name=='Park Rest Area')].name", + "value": "Park Rest Area", + "point": 4 + }, + "7": { + "ele": "$.children[?(@.name=='Park Rest Area')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 2 + }, + "8": { + "ele": "$.children[?(@.name=='Park Rest Area')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 2 + }, + "9": { + "ele": "$.children[?(@.name=='Park Rest Area')].text.font.sizes[0]", + "value": 48, + "point": 2 + }, + "10": { + "ele": "$.children[?(@.name=='Park Rest Area')].text.font.colors[0]", + "type": "color", + "value": "076414", + "point": 2 + }, + "11": { + "ele": "none", + "point": 0 + }, + "12": { + "ele": "none", + "point": 0 + }, + "13": { + "ele": "none", + "point": 0 + }, + "14": { + "ele": "$.children[?(@.name=='공원 쉼터')].name", + "value": "공원 쉼터", + "point": 4 + }, + "15": { + "ele": "$.children[?(@.name=='공원 쉼터')].text.font.names[0]", + "type": "font", + "value": "GungsuhChe", + "point": 2 + }, + "16": { + "ele": "$.children[?(@.name=='공원 쉼터')].text.font.sizes[0]", + "value": 36, + "point": 2 + }, + "17": { + "ele": "$.children[?(@.name=='공원 쉼터')].text.font.colors[0]", + "type": "color", + "value": "4f4300", + "point": 2 + }, + "18": { + "ele": "none", + "point": 0 + }, + "19": { + "ele": "none", + "point": 0 + }, + "20": { + "ele": "none", + "point": 0 + }, + "21": { + "ele": "none", + "point": 0 + }, + "22": { + "ele": "$.children[?(@.name=='나무 의자')].name", + "value": "나무 의자", + "point": 4 + }, + "23": { + "ele": "none", + "point": 0 + }, + "24": { + "ele": "none", + "point": 0 + }, + "25": { + "ele": "none", + "point": 0 + }, + "26": { + "ele": "$[?(@.width == 65 && @.height == 35)]", + "type": "size", + "value": { + "width": 65, + "height": 35 + }, + "point": 5 + }, + "27": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "2": { + "videoStartTime": 170, + "openingStartTime": 0, + "1": { + "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path", + "type": "array", + "value": [ + "동영상.mp4", + "이미지2.jpg", + "이미지3.jpg", + "이미지1.jpg" + ], + "point": 4 + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='150']", + "point": 2 + }, + "3": { + "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)", + "type": "startend", + "start": "0", + "end": "350", + "point": 2 + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='56'][@VID100='80'][@VID101='100']", + "point": 3 + }, + "5": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "video", + "value": "연못 전망대 가는 길", + "point": 3 + }, + "6": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "연못 전망대 가는 길", + "type": "video", + "value": "바탕체", + "point": 2 + }, + + "7": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "연못 전망대 가는 길", + "type": "video", + "value": "100", + "point": 2 + }, + "8": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "연못 전망대 가는 길", + "type": "video", + "value": "-2490121", + "point": 2 + }, + "9": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']", + "type": "video", + "search": "연못 전망대 가는 길", + "value": [ + 0.31979167, + 0.93333334 + ], + "point": 2 + }, + "10": { + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "search": "연못 전망대 가는 길", + "type": "video", + "value": 170, + "point": 2 + }, + "11": { + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "search": "연못 전망대 가는 길", + "type": "video", + "value": "150", + "point": 2 + }, + "12": { + "existEle": "//CRClip[@Path='동영상.mp4']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute", + "type": "searchIndex", + "value": "1", + "point": 2 + }, + "13": { + "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "150", + "point": 2 + }, + "14": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", + "value": [ + "104", + "7" + ], + "point": 2 + }, + "15": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "13", + "440:500", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "16": { + "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "17": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID105']", + "value": [ + "108", + "5" + ], + "point": 2 + }, + "18": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='16']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "21", + "650:710", + "16" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "19": { + "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "150", + "point": 2 + }, + "20": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", + "value": [ + "93", + "5" + ], + "point": 2 + }, + "21": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "24", + "800:830", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "22": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "opening", + "value": "자연 테마 파크 Nature theme park", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "자연 테마 파크 Nature theme park", + "type": "opening", + "value": "궁서체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "자연 테마 파크 Nature theme park", + "type": "opening", + "value": "150", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "자연 테마 파크 Nature theme park", + "type": "opening", + "value": "-16715265", + "point": 2 + }, + "26": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "search": "자연 테마 파크 Nature theme park", + "type": "opening", + "value": [ + "0.2", + "-6323684" + ], + "point": 2 + }, + "27": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']", + "search": "자연 테마 파크 Nature theme park", + "type": "opening", + "value":[ + "1", + "3" + ], + "point": 3 + }, + "28": { + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "search": "자연 테마 파크 Nature theme park", + "type": "opening", + "value": 0, + "point": 2 + }, + "29": { + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "search": "자연 테마 파크 Nature theme park", + "type": "opening", + "value": "120", + "point": 2 + }, + "30": { + "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]", + "point": 2 + }, + "31": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='800']", + "point": 2 + }, + "32": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']", + "point": 2 + }, + "33": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "4": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "350" + ], + "point": 5, + "desc": "캔버스 사이즈 650*350" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "자유 변형 문항은 채점 불가" + }, + "3": { + "type" : "isExist", + "ele": "//Layer/Name/@value", + "value": "Tracking", + "point": 5, + "desc": "Tracking 레이어가 있는지 여부 체크" + }, + "4": { + "type" : "multiValue", + "ele": "//Layer[Name[@value='{layer}']]/Effects/Item/Name/@value | //Layer[Name[@value='{layer}']]/Effects/Item/EffectData/{option}/@value", + "layer" : "Tracking", + "option" : "brightness", + "value" : [ + "30", + "밝기/대비" + ], + "point": 5, + "desc": "Tracking 레이어의 효과 체크" + }, + "5": { + "ele": "none", + "point": 6, + "desc": "올가미 도구/이미지 문항은 채점 불가" + }, + "6": { + "type" : "isExist", + "ele": "//Layer/Effects/Item/Name/@value", + "value" : "세피아", + "point": 6, + "desc": "세피아 효과가 있는지 여부 체크" + }, + "7": { + "type": "exact", + "ele": "//Layer/Shapes/Shape/shape_type/@value", + "value": "ELLIPSE", + "point": 3, + "desc": "레이어 쉐이프 타입이 타원인지 체크" + }, + "8": { + "type": "size", + "posX": "//Layer//op_points[Item]/Item[last()]/X/@value - //Layer//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer//op_points[Item]/Item[last()]/Y/@value - //Layer//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 80, + "height": 80 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "9": { + "type": "color", + "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "999999", + "point": 6, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "10": { + "type" : "multiValue", + "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value", + "value" : [ + "색 회피율", + "80" + ], + "point": 5, + "desc": "혼합모드(색 회피율, 불투명도 : 80)" + }, + "11": { + "ele": "none", + "point": 0, + "desc": "기본설정" + }, + "12": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "5": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "450" + ], + "point": 5, + "desc": "캔버스 사이즈 650*450" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "배경색 문항은 채점 불가" + }, + "3": { + "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']", + "point": 6 + }, + "4": { + "ele": "none", + "point": 5, + "desc": "가로방향 흐릿하게 문항은 채점 불가" + }, + "5": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "answer": "RECTANGLE", + "point": 6 + }, + "6": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 300, + "height": 50 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "7": { + "type": "gradient", + "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value", + "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value", + "value": { + "startColor": "347813", + "endColor": "041177" + }, + "point": 6 + }, + "8": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", + "value": "어린이 과학관", + "point": 5 + }, + "9": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", + "value": "돋움", + "point": 3 + }, + "10": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value", + "value": "True", + "point": 3 + }, + "11": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", + "value": "32", + "point": 3 + }, + "12": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "f04da5", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "13": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "point": 3 + }, + "14": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "ffe000", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "15": { + "ele": "//Layer[MaskOpType/@value='Clipping'][last()]", + "point": 6, + "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" + }, + "16": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "value": "RECTANGLE", + "point": 3 + }, + "17": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 150, + "height": 150 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "19": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "008878", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" + }, + "20": { + "type": "shadow", + "ele": { + "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]", + "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value", + "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", + "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", + "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" + }, + "value": { + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + }, + "21": { + "ele": "none", + "point": 0, + "desc": "기본설정" + }, + "22": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + } +} \ No newline at end of file diff --git a/DIC_2504A.json b/DIC_2504A.json new file mode 100644 index 0000000..6e36bf2 --- /dev/null +++ b/DIC_2504A.json @@ -0,0 +1,694 @@ +{ + "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=='Healing Cafe')].name", + "value": "Healing Cafe", + "point": 4 + }, + "6": { + "ele": "$.children[?(@.name=='Healing Cafe')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 2 + }, + "7": { + "ele": "$.children[?(@.name=='Healing Cafe')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 2 + }, + "8": { + "ele": "$.children[?(@.name=='Healing Cafe')].text.font.sizes[0]", + "value": 48, + "point": 2 + }, + "9": { + "ele": "$.children[?(@.name=='Healing Cafe')].text.font.colors[0]", + "type": "color", + "value": "cdf9c3", + "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": "GulimChe", + "point": 2 + }, + "15": { + "ele": "$.children[?(@.name=='나만의 힐링 카페')].text.font.sizes[0]", + "value": 36, + "point": 2 + }, + "16": { + "ele": "$.children[?(@.name=='나만의 힐링 카페')].text.font.colors[0]", + "type": "color", + "value": "92350c", + "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": { + "videoStartTime": 150, + "openingStartTime": 0, + "1": { + "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path", + "type": "array", + "value": [ + "동영상.mp4", + "이미지2.jpg", + "이미지3.jpg", + "이미지1.jpg" + ], + "point": 4 + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='140']", + "point": 2 + }, + "3": { + "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)", + "type": "startend", + "start": "0", + "end": "370", + "point": 2 + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='70'][@VID100='40'][@VID101='60']", + "point": 3 + }, + "5": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "video", + "value": "다양한 커피 원두", + "point": 3 + }, + "6": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "다양한 커피 원두", + "type": "video", + "value": "돋움체", + "point": 2 + }, + "7": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "다양한 커피 원두", + "type": "video", + "value": "110", + "point": 2 + }, + "8": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "다양한 커피 원두", + "type": "video", + "value": "-5551815", + "point": 2 + }, + "9": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']", + "type": "video", + "search": "다양한 커피 원두", + "value": [ + 0.33229166, + 0.92962962 + ], + "point": 2 + }, + "10": { + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "search": "다양한 커피 원두", + "type": "video", + "value": 150, + "point": 2 + }, + "11": { + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "search": "다양한 커피 원두", + "type": "video", + "value": "180", + "point": 2 + }, + "12": { + "existEle": "//CRClip[@Path='동영상.mp4']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute", + "type": "searchIndex", + "value": "1", + "point": 2 + }, + "13": { + "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "14": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", + "value": [ + "102", + "4" + ], + "point": 2 + }, + "15": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "13", + "490:550", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "16": { + "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "17": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", + "value": [ + "103", + "8" + ], + "point": 2 + }, + "18": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "11", + "670:730", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "19": { + "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "150", + "point": 2 + }, + "20": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID100']", + "value": [ + "184", + "20" + ], + "point": 2 + }, + "21": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "0", + "850:880", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "22": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "opening", + "value": "라떼아트 만들기 (Making latte art)", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "라떼아트 만들기 (Making latte art)", + "type": "opening", + "value": "바탕체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "라떼아트 만들기 (Making latte art)", + "type": "opening", + "value": "140", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "라떼아트 만들기 (Making latte art)", + "type": "opening", + "value": "-12036743", + "point": 2 + }, + "26": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "search": "라떼아트 만들기 (Making latte art)", + "type": "opening", + "value": [ + "0.2", + "-3545400" + ], + "point": 2 + }, + "27": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']", + "search": "라떼아트 만들기 (Making latte art)", + "type": "opening", + "value": [ + "4", + "2" + ], + "point": 3 + }, + "28": { + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "search": "라떼아트 만들기 (Making latte art)", + "type": "opening", + "value": 0, + "point": 2 + }, + "29": { + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "search": "라떼아트 만들기 (Making latte art)", + "type": "opening", + "value": "120", + "point": 2 + }, + "30": { + "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]", + "point": 2 + }, + "31": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='870']", + "point": 2 + }, + "32": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='60']", + "point": 2 + }, + "33": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "4": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "350" + ], + "point": 5, + "desc": "캔버스 사이즈 650*350" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "자유 변형 문항은 채점 불가" + }, + "3": { + "type": "exists", + "ele": "//Layer/Name/@value", + "value": "Germs", + "point": 5, + "desc": "Germs 레이어가 있는지 여부 체크" + }, + "4": { + "type": "effects", + "ele": "//Layer[Name[@value='{layer}']]/Effects/Item", + "layer": "Germs", + "option": "amount", + "value": [ + "선명하게", + "12" + ], + "point": 5, + "desc": "Germs 레이어의 효과 체크" + }, + "5": { + "ele": "none", + "point": 6, + "desc": "올가미 도구/이미지 문항은 채점 불가" + }, + "6": { + "type": "exists", + "ele": "//Layer/Effects/Item/Name/@value", + "value": "세피아", + "point": 6, + "desc": "세피아 효과가 있는지 여부 체크" + }, + "7": { + "type": "exact", + "ele": "//Layer/Shapes/Shape/shape_type/@value", + "value": "ELLIPSE", + "point": 3, + "desc": "레이어 쉐이프 타입이 ELLIPSE인지 체크" + }, + "8": { + "type": "size", + "ele": "//Layer//op_points", + "value": { + "width": 130, + "height": 80 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "9": { + "type": "color", + "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "000555", + "point": 6, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "10": { + "type": "multiValue", + "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value", + "value": [ + "중첩", + "75" + ], + "point": 6, + "desc": "혼합모드(중첩, 불투명도 : 75)" + }, + "11": { + "ele": "none", + "point": 0, + "desc": "기본설정" + }, + "12": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "5": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "450" + ], + "point": 5, + "desc": "캔버스 사이즈 650*450" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "배경색 문항은 채점 불가" + }, + "3": { + "type": "exists", + "ele": "//Layer/MaskOpType/@value", + "value": "Layering", + "point": 6 + }, + "4": { + "ele": "none", + "point": 5, + "desc": "가로방향 흐릿하게 문항은 채점 불가" + }, + "5": { + "type": "exists", + "ele": "//Layer//shape_type/@value", + "value": "ROUNDED_RECTANGLE", + "point": 3 + }, + "6": { + "type": "size", + "ele": "//Layer//op_points", + "value": { + "width": 370, + "height": 60 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "7": { + "type": "gradient", + "ele": "//Layer/Shapes/Shape", + "startColor": "gradient_start_color/@value", + "endColor": "gradient_end_color/@value", + "value": { + "startColor": "347813", + "endColor": "041177" + }, + "point": 6 + }, + "8": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", + "value": "어린이 과학관", + "point": 5 + }, + "9": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", + "value": "돋움", + "point": 3 + }, + "10": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/{style}/@value", + "style": "Italic", + "value": "True", + "point": 3 + }, + "11": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", + "value": "32", + "point": 3 + }, + "12": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "f04da5", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "13": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "point": 3 + }, + "14": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "ffe000", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "15": { + "type": "boolean", + "ele": "//Layer[MaskOpType/@value='Clipping']", + "point": 6, + "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" + }, + "16": { + "type": "exists", + "ele": "//Layer/Shapes/Shape/shape_type/@value", + "value": "RECTANGLE", + "point": 3 + }, + "17": { + "type": "size", + "ele": "//Layer//op_points", + "value": { + "width": 150, + "height": 150 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "type": "exists", + "ele": "//Layer//outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "19": { + "type": "color", + "ele": "//Layer//Shape[contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "008878", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" + }, + "20": { + "type": "shadow", + "ele": { + "shadow": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]", + "width": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_width/@value", + "distance": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", + "blur": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", + "angle": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" + }, + "value": { + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + }, + "21": { + "ele": "none", + "point": 0, + "desc": "기본설정" + }, + "22": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + } +} \ No newline at end of file diff --git a/DIC_2504B.json b/DIC_2504B.json new file mode 100644 index 0000000..f72dc0d --- /dev/null +++ b/DIC_2504B.json @@ -0,0 +1,691 @@ +{ + "0": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "none", + "point": 0 + }, + "5": { + "ele": "none", + "point": 0 + }, + "6": { + "ele": "none", + "point": 0 + }, + "7": { + "ele": "none", + "point": 0 + }, + "8": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "size", + "value": { + "width": 65, + "height": 45 + }, + "point": 4 + }, + "9": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "1": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "$.children[?(@.name=='꽃잎들')].name", + "value": "꽃잎들", + "point": 4 + }, + "5": { + "ele": "none", + "point": 0 + }, + "6": { + "ele": "$.children[?(@.name=='Flower Rock')].name", + "value": "Flower Rock", + "point": 4 + }, + "7": { + "ele": "$.children[?(@.name=='Flower Rock')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 2 + }, + "8": { + "ele": "$.children[?(@.name=='Flower Rock')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 2 + }, + "9": { + "ele": "$.children[?(@.name=='Flower Rock')].text.font.sizes[0]", + "value": 48, + "point": 2 + }, + "10": { + "ele": "$.children[?(@.name=='Flower Rock')].text.font.colors[0]", + "type": "color", + "value": "d6f592", + "point": 2 + }, + "11": { + "ele": "none", + "point": 0 + }, + "12": { + "ele": "none", + "point": 0 + }, + "13": { + "ele": "none", + "point": 0 + }, + "14": { + "ele": "$.children[?(@.name=='꽃과 바위')].name", + "value": "꽃과 바위", + "point": 4 + }, + "15": { + "ele": "$.children[?(@.name=='꽃과 바위')].text.font.names[0]", + "type": "font", + "value": "DotumChe", + "point": 2 + }, + "16": { + "ele": "$.children[?(@.name=='꽃과 바위')].text.font.sizes[0]", + "value": 36, + "point": 2 + }, + "17": { + "ele": "$.children[?(@.name=='꽃과 바위')].text.font.colors[0]", + "type": "color", + "value": "0d17d5", + "point": 2 + }, + "18": { + "ele": "none", + "point": 0 + }, + "19": { + "ele": "none", + "point": 0 + }, + "20": { + "ele": "none", + "point": 0 + }, + "21": { + "ele": "none", + "point": 0 + }, + "22": { + "ele": "$.children[?(@.name=='노랑꽃')].name", + "value": "노랑꽃", + "point": 4 + }, + "23": { + "ele": "none", + "point": 0 + }, + "24": { + "ele": "none", + "point": 0 + }, + "25": { + "ele": "none", + "point": 0 + }, + "26": { + "ele": "$[?(@.width == 65 && @.height == 35)]", + "type": "size", + "value": { + "width": 65, + "height": 35 + }, + "point": 5 + }, + "27": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "2": { + "videoStartTime": 170, + "openingStartTime": 0, + "1": { + "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path", + "type": "array", + "value": [ + "동영상.mp4", + "이미지3.jpg", + "이미지1.jpg", + "이미지2.jpg" + ], + "point": 4 + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='140']", + "point": 2 + }, + "3": { + "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)", + "type": "startend", + "start": "0", + "end": "370", + "point": 2 + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='44'][@VID100='8'][@VID103='0.89999998']", + "point": 3 + }, + "5": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "video", + "value": "화단의 꽃들", + "point": 3 + }, + "6": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "화단의 꽃들", + "type": "video", + "value": "돋움체", + "point": 2 + }, + "7": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "화단의 꽃들", + "type": "video", + "value": "110", + "point": 2 + }, + "8": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "화단의 꽃들", + "type": "video", + "value": "-14986241", + "point": 2 + }, + "9": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']", + "type": "video", + "search": "화단의 꽃들", + "value": [ + 0.38333333, + 0.92962962 + ], + "point": 2 + }, + "10": { + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "search": "화단의 꽃들", + "type": "video", + "value": 170, + "point": 2 + }, + "11": { + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "search": "화단의 꽃들", + "type": "video", + "value": "150", + "point": 2 + }, + "12": { + "existEle": "//CRClip[@Path='동영상.mp4']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute", + "type": "searchIndex", + "value": "1", + "point": 2 + }, + "13": { + "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "14": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']", + "value": [ + "67", + "40" + ], + "point": 2 + }, + "15": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "10", + "490:550", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "16": { + "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "17": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']", + "value": [ + "103", + "7" + ], + "point": 2 + }, + "18": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "12", + "670:730", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "19": { + "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "150", + "point": 2 + }, + "20": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", + "value": [ + "102", + "3" + ], + "point": 2 + }, + "21": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "0", + "850:880", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "22": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "opening", + "value": "아름다운 꽃 축제 (Happy Flower Festival)", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "type": "opening", + "value": "궁서체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "type": "opening", + "value": "140", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "type": "opening", + "value": "-7601940", + "point": 2 + }, + "26": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "type": "opening", + "value": [ + "0.40000001", + "-3868161" + ], + "point": 2 + }, + "27": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']", + "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "type": "opening", + "value": [ + "14", + "2" + ], + "point": 3 + }, + "28": { + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "type": "opening", + "value": 0, + "point": 2 + }, + "29": { + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "search": "아름다운 꽃 축제 (Happy Flower Festival)", + "type": "opening", + "value": "120", + "point": 2 + }, + "30": { + "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]", + "point": 2 + }, + "31": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='870']", + "point": 2 + }, + "32": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='60']", + "point": 2 + }, + "33": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "4": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "350" + ], + "point": 5, + "desc": "캔버스 사이즈 650*350" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "자유 변형 문항은 채점 불가" + }, + "3": { + "type": "isExist", + "ele": "//Layer/Name/@value", + "value": "Flower", + "point": 5, + "desc": "Flower 레이어가 있는지 여부 체크" + }, + "4": { + "type": "multiValue", + "ele": "//Layer[Name[@value='{layer}']]/Effects/Item", + "layer": "Flower", + "option": "VibranceValue", + "value": [ + "39", + "생동감" + ], + "point": 5, + "desc": "Flower 레이어의 효과 체크" + }, + "5": { + "ele": "none", + "point": 6, + "desc": "올가미 도구/이미지 문항은 채점 불가" + }, + "6": { + "type": "exists", + "ele": "//Layer/Effects/Item/Name/@value", + "value": "세피아", + "point": 6, + "desc": "세피아 효과가 있는지 여부 체크" + }, + "7": { + "type": "exact", + "ele": "//Layer/Shapes/Shape/shape_type/@value", + "value": "ELLIPSE", + "point": 3, + "desc": "레이어 쉐이프 타입이 타원인지 체크" + }, + "8": { + "type": "size", + "ele": "//Layer//op_points", + "value": { + "width": 80, + "height": 80 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "9": { + "type": "color", + "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "7097bb", + "point": 6, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "10": { + "type": "multiValue", + "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value", + "value": [ + "반사", + "80" + ], + "point": 5, + "desc": "혼합모드(색 회피율, 불투명도 : 80)" + }, + "11": { + "ele": "none", + "point": 0, + "desc": "기본설정" + }, + "12": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "5": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "450" + ], + "point": 5, + "desc": "캔버스 사이즈 650*450" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "배경색 문항은 채점 불가" + }, + "3": { + "type": "exists", + "ele": "//Layer/MaskOpType/@value", + "value": "Layering", + "point": 6 + }, + "4": { + "ele": "none", + "point": 6, + "desc": "가로방향 흐릿하게 문항은 채점 불가" + }, + "5": { + "type": "exists", + "ele": "//Layer//shape_type/@value", + "value": "ROUNDED_RECTANGLE", + "point": 3 + }, + "6": { + "type": "size", + "ele": "//Layer//op_points", + "value": { + "width": 400, + "height": 60 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "7": { + "type": "gradient", + "ele": "//Layer/Shapes/Shape", + "startColor": "gradient_start_color/@value", + "endColor": "gradient_end_color/@value", + "value": { + "startColor": "ffe000", + "endColor": "34a159" + }, + "point": 6 + }, + "8": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", + "value": "흰 꽃 사이 노란 꽃", + "point": 5 + }, + "9": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", + "value": "맑은 고딕", + "point": 3 + }, + "10": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/{style}/@value", + "style": "Italic", + "value": "True", + "point": 3 + }, + "11": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", + "value": "30", + "point": 3 + }, + "12": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "b46ef8", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "13": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "14": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "ffffff", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "15": { + "ele": "//Layer[MaskOpType/@value='Clipping'][last()]", + "point": 6, + "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" + }, + "16": { + "type": "exists", + "ele": "//Layer/Shapes/Shape/shape_type/@value", + "value": "RACTANGLE", + "point": 3 + }, + "17": { + "type": "size", + "ele": "//Layer//op_points", + "value": { + "width": 150, + "height": 150 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "type": "exists", + "ele": "//Layer//outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "19": { + "type": "color", + "ele": "//Layer//Shape[contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "e8e88e", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" + }, + "20": { + "type": "shadow", + "ele": { + "shadow": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]", + "width": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_width/@value", + "distance": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", + "blur": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", + "angle": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" + }, + "value": { + "width": "3", + "distance": "5", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + }, + "21": { + "ele": "none", + "point": 0, + "desc": "기본설정" + }, + "22": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + } +} \ No newline at end of file diff --git a/DIC_2504C.json b/DIC_2504C.json new file mode 100644 index 0000000..f612e38 --- /dev/null +++ b/DIC_2504C.json @@ -0,0 +1,695 @@ +{ + "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=='Arboretum in spring')].name", + "value": "Arboretum in spring", + "point": 4 + }, + "6": { + "ele": "$.children[?(@.name=='Arboretum in spring')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 2 + }, + "7": { + "ele": "$.children[?(@.name=='Arboretum in spring')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 2 + }, + "8": { + "ele": "$.children[?(@.name=='Arboretum in spring')].text.font.sizes[0]", + "value": 48, + "point": 2 + }, + "9": { + "ele": "$.children[?(@.name=='Arboretum in spring')].text.font.colors[0]", + "type": "color", + "value": "a808d0", + "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 YetR GulimChe 선택해서 사용" + }, + "15": { + "ele": "$.children[?(@.name=='봄날의 수목원')].text.font.sizes[0]", + "value": 36, + "point": 2 + }, + "16": { + "ele": "$.children[?(@.name=='봄날의 수목원')].text.font.colors[0]", + "type": "color", + "value": "096e34", + "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": { + "videoStartTime": 165, + "openingStartTime": 0, + "1": { + "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path", + "type": "array", + "value": [ + "동영상.mp4", + "이미지3.jpg", + "이미지2.jpg", + "이미지1.jpg" + ], + "point": 4 + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='130']", + "point": 2 + }, + "3": { + "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)", + "type": "startend", + "start": "0", + "end": "360", + "point": 2 + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='151'][@VID103='0.80000001'][@VID104='20']", + "point": 3 + }, + "5": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "video", + "value": "아름다운 봄꽃들", + "point": 3 + }, + "6": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "아름다운 봄꽃들", + "type": "video", + "value": "굴림체", + "point": 2 + }, + "7": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "아름다운 봄꽃들", + "type": "video", + "value": "110", + "point": 2 + }, + "8": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "아름다운 봄꽃들", + "type": "video", + "value": "-13107457", + "point": 2 + }, + "9": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID600' or name()='VID601']", + "type": "video", + "search": "아름다운 봄꽃들", + "value": [ + 0.34270835, + 0.92962962 + ], + "point": 2 + }, + "10": { + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "search": "아름다운 봄꽃들", + "type": "video", + "value": 165, + "point": 2 + }, + "11": { + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "search": "아름다운 봄꽃들", + "type": "video", + "value": "150", + "point": 2 + }, + "12": { + "existEle": "//CRClip[@Path='동영상.mp4']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute", + "type": "searchIndex", + "value": "1", + "point": 2 + }, + "13": { + "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "150", + "point": 2 + }, + "14": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID103']", + "value": [ + "184", + "50" + ], + "point": 2 + }, + "15": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "9", + "480:510", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "16": { + "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "17": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID100']", + "value": [ + "128", + "9" + ], + "point": 2 + }, + "18": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "11", + "630:690", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "19": { + "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "210", + "point": 2 + }, + "20": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID104']", + "value": [ + "67", + "5" + ], + "point": 2 + }, + "21": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)][@Type='2']/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "21", + "810:900", + "2" + ], + "point": 2, + "desc": "오버랩일 경우 XPATH구문에서 Type속성값 16으로 변경, 그리고 ClipIndex값은 트랜지션이 끝나는 지점 이미지의 ClipIndex값을 가지게 되어 다음 순서의 이미지로 변경해주어야한다." + }, + "22": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "opening", + "value": "봄을 담은 정원 (A Spring Garden)", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "봄을 담은 정원 (A Spring Garden)", + "type": "opening", + "value": "궁서체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "봄을 담은 정원 (A Spring Garden)", + "type": "opening", + "value": "140", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "봄을 담은 정원 (A Spring Garden)", + "type": "opening", + "value": "-5232740", + "point": 2 + }, + "26": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "search": "봄을 담은 정원 (A Spring Garden)", + "type": "opening", + "value": [ + "0.40000001", + "-2961922" + ], + "point": 2 + }, + "27": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']", + "search": "봄을 담은 정원 (A Spring Garden)", + "type": "opening", + "value": [ + "22", + "2" + ], + "point": 3 + }, + "28": { + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "search": "봄을 담은 정원 (A Spring Garden)", + "type": "opening", + "value": 0, + "point": 2 + }, + "29": { + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "search": "봄을 담은 정원 (A Spring Garden)", + "type": "opening", + "value": "120", + "point": 2 + }, + "30": { + "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]", + "point": 2 + }, + "31": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='870']", + "point": 2 + }, + "32": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='30']", + "point": 2 + }, + "33": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "4": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "350" + ], + "point": 5, + "desc": "캔버스 사이즈 650*350" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "자유 변형 문항은 채점 불가" + }, + "3": { + "type": "exists", + "ele": "//Layer/Name/@value", + "value": "Germs", + "point": 5, + "desc": "Germs 레이어가 있는지 여부 체크" + }, + "4": { + "type": "effects", + "ele": "//Layer[Name[@value='{layer}']]/Effects/Item", + "layer": "Germs", + "option": "amount", + "value": [ + "선명하게", + "12" + ], + "point": 5, + "desc": "Germs 레이어의 효과 체크" + }, + "5": { + "ele": "none", + "point": 6, + "desc": "올가미 도구/이미지 문항은 채점 불가" + }, + "6": { + "type": "exists", + "ele": "//Layer/Effects/Item/Name/@value", + "value": "세피아", + "point": 6, + "desc": "세피아 효과가 있는지 여부 체크" + }, + "7": { + "type": "exact", + "ele": "//Layer/Shapes/Shape/shape_type/@value", + "value": "ELLIPSE", + "point": 3, + "desc": "레이어 쉐이프 타입이 ELLIPSE인지 체크" + }, + "8": { + "type": "size", + "ele": "//Layer//op_points", + "value": { + "width": 130, + "height": 80 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "9": { + "type": "color", + "ele": "//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "000555", + "point": 6, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "10": { + "type": "multiValue", + "ele": "//Layer/BlendOp/@value | //Layer/Opacity/@value", + "value": [ + "중첩", + "75" + ], + "point": 6, + "desc": "혼합모드(중첩, 불투명도 : 75)" + }, + "11": { + "ele": "none", + "point": 0, + "desc": "기본설정" + }, + "12": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + }, + "5": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "450" + ], + "point": 5, + "desc": "캔버스 사이즈 650*450" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "배경색 문항은 채점 불가" + }, + "3": { + "type": "exists", + "ele": "//Layer/MaskOpType/@value", + "value": "Layering", + "point": 6 + }, + "4": { + "ele": "none", + "point": 5, + "desc": "가로방향 흐릿하게 문항은 채점 불가" + }, + "5": { + "type": "exists", + "ele": "//Layer//shape_type/@value", + "value": "ROUNDED_RECTANGLE", + "point": 3 + }, + "6": { + "type": "size", + "ele": "//Layer//op_points", + "value": { + "width": 370, + "height": 60 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "7": { + "type": "gradient", + "ele": "//Layer/Shapes/Shape", + "startColor": "gradient_start_color/@value", + "endColor": "gradient_end_color/@value", + "value": { + "startColor": "347813", + "endColor": "041177" + }, + "point": 6 + }, + "8": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", + "value": "어린이 과학관", + "point": 5 + }, + "9": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", + "value": "돋움", + "point": 3 + }, + "10": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/{style}/@value", + "style": "Italic", + "value": "True", + "point": 3 + }, + "11": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", + "value": "32", + "point": 3 + }, + "12": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "f04da5", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "13": { + "type": "exists", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "point": 3 + }, + "14": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "ffe000", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "15": { + "type": "boolean", + "ele": "//Layer[MaskOpType/@value='Clipping']", + "point": 6, + "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" + }, + "16": { + "type": "exists", + "ele": "//Layer/Shapes/Shape/shape_type/@value", + "value": "RECTANGLE", + "point": 3 + }, + "17": { + "type": "size", + "ele": "//Layer//op_points", + "value": { + "width": 150, + "height": 150 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "type": "exists", + "ele": "//Layer//outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "19": { + "type": "color", + "ele": "//Layer//Shape[contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "008878", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" + }, + "20": { + "type": "shadow", + "ele": { + "shadow": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]", + "width": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_width/@value", + "distance": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", + "blur": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", + "angle": "//Layer//Shape[contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" + }, + "value": { + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + }, + "21": { + "ele": "none", + "point": 0, + "desc": "기본설정" + }, + "22": { + "ele": "none", + "point": 0, + "desc": "파일명 확인" + } + } +} \ No newline at end of file diff --git a/copyFiles.py b/copyFiles.py index dc291d2..b72799f 100644 --- a/copyFiles.py +++ b/copyFiles.py @@ -5,7 +5,7 @@ import unicodedata def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, target_root_d, target_root_e): for root, dirs, files in os.walk(source_root): for dir_name in dirs: - if dir_name == 'DIC': # DIC 디렉토리 탐색 + if dir_name.lower() == 'dic': # DIC 디렉토리 탐색 parent_dir = os.path.basename(os.path.dirname(os.path.join(root, dir_name))) target_root = None parent_dir = unicodedata.normalize('NFC', parent_dir) @@ -24,21 +24,28 @@ def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, t if target_root: source_dic_path = os.path.join(root, dir_name) - target_dic_path = os.path.join(target_root, dir_name) + target_dir_name = dir_name.upper() + target_dic_path = os.path.join(target_root, target_dir_name) # DIC 하위 디렉토리와 파일 복사 shutil.copytree(source_dic_path, target_dic_path, dirs_exist_ok=True) print(f"Copied {source_dic_path} to {target_dic_path}") + + test_folder_path = os.path.join(target_root, "TEST") + os.makedirs(test_folder_path, exist_ok=True) else: print(f"Skipping {dir_name} under {parent_dir}, as it doesn't match '2교시' or '3교시'.") # 사용법 -source_directory = r"C:\Users\dra\project\GOM\DIC\회차별채점자료\0000\정답" # 원본 디렉토리 경로 -target_directory_a = r".\output\A" # '2교시'의 타겟 경로 -target_directory_b = r".\output\B" # '2교시'의 타겟 경로 -target_directory_c = r".\output\C" # '3교시'의 타겟 경로 -target_directory_d = r".\output\D" # '3교시'의 타겟 경로 -target_directory_e = r".\output\E" # '3교시'의 타겟 경로 +exam_round = "2504" +source_directory = r"C:\Users\dra\project\data\제2504회 정기\답안파일" # 원본 디렉토리 경로 + +target_directory_a = f".\\output\\{exam_round}\\A" # '1교시'의 타겟 경로 +target_directory_b = f".\\output\\{exam_round}\\B" # '2교시'의 타겟 경로 +target_directory_c = f".\\output\\{exam_round}\\C" # '3교시'의 타겟 경로 +target_directory_d = f".\\output\\{exam_round}\\D" # '4교시'의 타겟 경로 +target_directory_e = f".\\output\\{exam_round}\\E" # '5교시'의 타겟 경로 + copy_dic_subdirs(source_directory, target_directory_a, target_directory_b, target_directory_c, target_directory_d, target_directory_e) diff --git a/psdExport_2.js b/psdExport_2.js index dd5a53a..3a511a8 100644 --- a/psdExport_2.js +++ b/psdExport_2.js @@ -11,7 +11,8 @@ const getGpdpScore = require('./gpdpScoring.js'); const getToday = require('./getToday.js'); const todayDate = getToday(); -const examRound = '0000'; +const examRound = '2504'; +const dic_or_dpi = 'DIC' const examTypes = [ 'A', 'B', @@ -27,8 +28,18 @@ const outputExcelFiles = []; examTypes.forEach(type => { const scoringJson = require(`./DIC_${examRound}${type}.json`); - const answerFilesDir = `./output/${type}/${testMode ? 'TEST' : 'DIC'}`; - const outputExcelFile = `./${todayDate}_DIC_${examRound}${type}_${testMode ? 'TEST.xlsx' : '채점결과.xlsx'}`; + const answerFilesDir = `./output/${examRound}/${type}/${testMode ? 'TEST' : dic_or_dpi}`; + let outputExcelFile = `./${todayDate}_${dic_or_dpi}_${examRound}${type}_채점결과.xlsx`; + if (testMode) { + outputExcelFile = `./00_${dic_or_dpi}_${examRound}${type}_TEST.xlsx`; + } + // const scoringJson = require(`./DIC_${examRound}${type}.json`); + // const answerFilesDir = `./output/${examRound}/${type}/${testMode ? 'TEST' : 'DIC'}`; + // let outputExcelFile = `./${todayDate}_DIC_${examRound}${type}_채점결과.xlsx`; + // if (testMode) { + // outputExcelFile = `./00_DIC_${examRound}${type}_TEST.xlsx`; + // } + // 답안 폴더 내부에 디렉토리가 아닌 일반 파일이 있을 경우 디렉토리만 필터링 해서 불러옴 const studentDirs = fs.readdirSync(answerFilesDir).filter(file => { diff --git a/samples/DIC(gompic).json b/samples/DIC(gompic).json deleted file mode 100644 index 0524501..0000000 --- a/samples/DIC(gompic).json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "4": { - "1": { - "type": "multi", - "ele": "//Document/Width/@value | //Document/Height/@value", - "value": [ - "650", - "450" - ], - "point": 5, - "desc": "캔버스 사이즈 650*450" - }, - "2": { - "ele": "none", - "point": 5, - "desc": "배경색 문항은 채점 불가" - }, - "3": { - "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']", - "point": 6 - }, - "4": { - "ele": "none", - "point": 5, - "desc": "가로방향 흐릿하게 문항은 채점 불가" - }, - "5": { - "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", - "answer": "ROUNDED_RECTANGLE", - "point": 6 - }, - "6": { - "type": "size", - "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value", - "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value", - "value": { - "width": 370, - "height": 60 - }, - "point": 3, - "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" - }, - "7": { - "type": "gradient", - "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value", - "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value", - "value": { - "startColor": "347813", - "endColor": "041177" - }, - "point": 6 - }, - "8": { - "type": "exact", - "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", - "value": "어린이 과학관", - "point": 5 - }, - "9": { - "type": "exact", - "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", - "value": "돋움", - "point": 3 - }, - "10": { - "type": "exact", - "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value", - "value": "True", - "point": 3 - }, - "11": { - "type": "exact", - "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", - "value": "32", - "point": 3 - }, - "12": { - "type": "color", - "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", - "value": "f04da5", - "point": 3, - "desc": "색상 코드 비교 시 소문자로 입력할 것" - }, - "13": { - "type": "exact", - "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", - "value": "3", - "point": 3 - }, - "14": { - "type": "color", - "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", - "value": "ffe000", - "point": 3, - "desc": "색상 코드 비교 시 소문자로 입력할 것" - }, - "15": { - "ele": "//Layer[MaskOpType/@value='Clipping'][last()]", - "point": 6, - "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" - }, - "16": { - "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", - "value": "RECTANGLE", - "point": 3 - }, - "17": { - "type": "size", - "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value", - "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value", - "value": { - "width": 150, - "height": 150 - }, - "point": 3, - "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" - }, - "18": { - "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value", - "value": "7", - "point": 3 - }, - "19": { - "type": "color", - "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value", - "value": "008878", - "point": 3, - "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" - }, - "20": { - "type": "shadow", - "ele": { - "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]", - "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value", - "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", - "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", - "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" - }, - "value": { - "width": "5", - "distance": "3", - "blur": "1", - "angle": "320" - }, - "point": 5, - "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" - } - } -} \ No newline at end of file diff --git a/samples/멀티미디어-000000-홍길동/dpi_01_000000_홍길동.xml b/samples/멀티미디어-000000-홍길동/dpi_01_000000_홍길동.xml deleted file mode 100644 index ea60744..0000000 --- a/samples/멀티미디어-000000-홍길동/dpi_01_000000_홍길동.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/samples/멀티미디어-000000-홍길동/dpi_02_000000_홍길동.xml b/samples/멀티미디어-000000-홍길동/dpi_02_000000_홍길동.xml deleted file mode 100644 index 0b65c1d..0000000 --- a/samples/멀티미디어-000000-홍길동/dpi_02_000000_홍길동.xml +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -