diff --git a/new/data/fonts/beleren-b.ttf b/new/data/fonts/beleren-b.ttf new file mode 100644 index 00000000..979b66c6 Binary files /dev/null and b/new/data/fonts/beleren-b.ttf differ diff --git a/new/data/fonts/beleren-bsc.ttf b/new/data/fonts/beleren-bsc.ttf new file mode 100644 index 00000000..53695db9 Binary files /dev/null and b/new/data/fonts/beleren-bsc.ttf differ diff --git a/new/data/fonts/gotham-medium.ttf b/new/data/fonts/gotham-medium.ttf new file mode 100644 index 00000000..fd822114 Binary files /dev/null and b/new/data/fonts/gotham-medium.ttf differ diff --git a/new/data/fonts/goudy-medieval.ttf b/new/data/fonts/goudy-medieval.ttf new file mode 100644 index 00000000..3f0c59e3 Binary files /dev/null and b/new/data/fonts/goudy-medieval.ttf differ diff --git a/new/data/fonts/goudy-medieval/Goudy Mediaeval DemiBold.ttf b/new/data/fonts/goudy-medieval/Goudy Mediaeval DemiBold.ttf new file mode 100644 index 00000000..67667056 Binary files /dev/null and b/new/data/fonts/goudy-medieval/Goudy Mediaeval DemiBold.ttf differ diff --git a/new/data/fonts/goudy-medieval/Goudy Mediaeval Regular.ttf b/new/data/fonts/goudy-medieval/Goudy Mediaeval Regular.ttf new file mode 100644 index 00000000..3f0c59e3 Binary files /dev/null and b/new/data/fonts/goudy-medieval/Goudy Mediaeval Regular.ttf differ diff --git a/new/data/fonts/goudy-medieval/Goudy Medieval Alternate.ttf b/new/data/fonts/goudy-medieval/Goudy Medieval Alternate.ttf new file mode 100644 index 00000000..58813bff Binary files /dev/null and b/new/data/fonts/goudy-medieval/Goudy Medieval Alternate.ttf differ diff --git a/new/data/fonts/matrix-b.ttf b/new/data/fonts/matrix-b.ttf new file mode 100644 index 00000000..855e51f9 Binary files /dev/null and b/new/data/fonts/matrix-b.ttf differ diff --git a/new/data/fonts/matrix-bsc.ttf b/new/data/fonts/matrix-bsc.ttf new file mode 100644 index 00000000..326e007b Binary files /dev/null and b/new/data/fonts/matrix-bsc.ttf differ diff --git a/new/data/fonts/matrix.ttf b/new/data/fonts/matrix.ttf new file mode 100644 index 00000000..c9b5e105 Binary files /dev/null and b/new/data/fonts/matrix.ttf differ diff --git a/new/data/fonts/mplantin-i.ttf b/new/data/fonts/mplantin-i.ttf new file mode 100644 index 00000000..5755831c Binary files /dev/null and b/new/data/fonts/mplantin-i.ttf differ diff --git a/new/data/fonts/mplantin.ttf b/new/data/fonts/mplantin.ttf new file mode 100644 index 00000000..116529ef Binary files /dev/null and b/new/data/fonts/mplantin.ttf differ diff --git a/new/data/fonts/relay-medium.ttf b/new/data/fonts/relay-medium.ttf new file mode 100644 index 00000000..a0f595b3 Binary files /dev/null and b/new/data/fonts/relay-medium.ttf differ diff --git a/new/data/images/aaam15WFull.png b/new/data/images/aaam15WFull.png new file mode 100644 index 00000000..20821f87 Binary files /dev/null and b/new/data/images/aaam15WFull.png differ diff --git a/new/data/images/aam15WFull.png b/new/data/images/aam15WFull.png new file mode 100644 index 00000000..24700dd8 Binary files /dev/null and b/new/data/images/aam15WFull.png differ diff --git a/new/data/images/corners.png b/new/data/images/corners.png new file mode 100644 index 00000000..49c14785 Binary files /dev/null and b/new/data/images/corners.png differ diff --git a/new/data/images/imageSpreadsheet.csv b/new/data/images/imageSpreadsheet.csv new file mode 100644 index 00000000..e16dbe79 --- /dev/null +++ b/new/data/images/imageSpreadsheet.csv @@ -0,0 +1,41 @@ +version,color,type,name,displayName,maskVersion,x,y,width,height,secondary +m15,W,Full,m15WFull,White,m15,0,0,1,1,TRUE +m15,U,Full,m15UFull,Blue,m15,0,0,1,1,TRUE +m15,B,Full,m15BFull,Black,m15,0,0,1,1,TRUE +m15,R,Full,m15RFull,Red,m15,0,0,1,1,TRUE +m15,G,Full,m15GFull,Green,m15,0,0,1,1,TRUE +m15,M,Full,m15MFull,Multicolored,m15,0,0,1,1,TRUE +m15,A,Full,m15AFull,Artifact,m15,0,0,1,1,TRUE +m15,C,Full,m15CFull,Colorless,m15,0,0,1,1,TRUE +m15,Mask,Frame,m15MaskFrame,,m15,0,0,1,1,TRUE +m15,Mask,Pinline,m15MaskPinline,,m15,0,0,1,1,TRUE +m15,Mask,Title,m15MaskTitle,,m15,0,0,1,1,TRUE +m15,Mask,Type,m15MaskType,,m15,0,0,1,1,TRUE +m15,Mask,Rules,m15MaskRules,,m15,0,0,1,1,TRUE +none,Mask,Secondary,secondary,,none,0,0,1,1,TRUE +m15,W,PT,m15WPT,White,m15,0.7613,0.8898,0.183,0.0734,FALSE +m15,U,PT,m15UPT,Blue,m15,0.7613,0.8898,0.183,0.0734,FALSE +m15,B,PT,m15BPT,Black,m15,0.7613,0.8898,0.183,0.0734,FALSE +m15,R,PT,m15RPT,Red,m15,0.7613,0.8898,0.183,0.0734,FALSE +m15,G,PT,m15GPT,Green,m15,0.7613,0.8898,0.183,0.0734,FALSE +m15,M,PT,m15MPT,Multicolored,m15,0.7613,0.8898,0.183,0.0734,FALSE +m15,A,PT,m15APT,Artifact,m15,0.7613,0.8898,0.183,0.0734,FALSE +m15,C,PT,m15CPT,Colorless,m15,0.7613,0.8898,0.183,0.0734,FALSE +none,Mask,Corners,corners,,none,0.0267,0.0191,0.952,0.1771,FALSE +m15,W,Legendary,m15WLegendary,White,m15,0.0267,0.0191,0.952,0.1771,TRUE +m15,U,Legendary,m15ULegendary,Blue,m15,0.0267,0.0191,0.952,0.1771,TRUE +m15,B,Legendary,m15BLegendary,Black,m15,0.0267,0.0191,0.952,0.1771,TRUE +m15,R,Legendary,m15RLegendary,Red,m15,0.0267,0.0191,0.952,0.1771,TRUE +m15,G,Legendary,m15GLegendary,Green,m15,0.0267,0.0191,0.952,0.1771,TRUE +m15,M,Legendary,m15MLegendary,Multicolored,m15,0.0267,0.0191,0.952,0.1771,TRUE +m15,A,Legendary,m15ALegendary,Artifact,m15,0.0267,0.0191,0.952,0.1771,TRUE +m15,C,Legendary,m15CLegendary,Colorless,m15,0.0267,0.0191,0.952,0.1771,TRUE +none,Mask,Stamp,stamp,,none,0.4387,0.9039,0.12,0.0477,FALSE +m15,W,RareStamp,m15WRareStamp,White,m15,0.4387,0.9039,0.12,0.0477,TRUE +m15,U,RareStamp,m15URareStamp,Blue,m15,0.4387,0.9039,0.12,0.0477,TRUE +m15,B,RareStamp,m15BRareStamp,Black,m15,0.4387,0.9039,0.12,0.0477,TRUE +m15,R,RareStamp,m15RRareStamp,Red,m15,0.4387,0.9039,0.12,0.0477,TRUE +m15,G,RareStamp,m15GRareStamp,Green,m15,0.4387,0.9039,0.12,0.0477,TRUE +m15,M,RareStamp,m15MRareStamp,Multicolored,m15,0.4387,0.9039,0.12,0.0477,TRUE +m15,A,RareStamp,m15ARareStamp,Artifact,m15,0.4387,0.9039,0.12,0.0477,TRUE +m15,C,RareStamp,m15CRareStamp,Colorless,m15,0.4387,0.9039,0.12,0.0477,TRUE \ No newline at end of file diff --git a/new/data/images/m15AFull.png b/new/data/images/m15AFull.png new file mode 100644 index 00000000..8fa95d51 Binary files /dev/null and b/new/data/images/m15AFull.png differ diff --git a/new/data/images/m15ALegendary.png b/new/data/images/m15ALegendary.png new file mode 100644 index 00000000..988f7c73 Binary files /dev/null and b/new/data/images/m15ALegendary.png differ diff --git a/new/data/images/m15APT.png b/new/data/images/m15APT.png new file mode 100644 index 00000000..15d680e6 Binary files /dev/null and b/new/data/images/m15APT.png differ diff --git a/new/data/images/m15ARareStamp.png b/new/data/images/m15ARareStamp.png new file mode 100644 index 00000000..99a1fb1d Binary files /dev/null and b/new/data/images/m15ARareStamp.png differ diff --git a/new/data/images/m15BFull.png b/new/data/images/m15BFull.png new file mode 100644 index 00000000..f5bc1d60 Binary files /dev/null and b/new/data/images/m15BFull.png differ diff --git a/new/data/images/m15BLegendary.png b/new/data/images/m15BLegendary.png new file mode 100644 index 00000000..282b3ba0 Binary files /dev/null and b/new/data/images/m15BLegendary.png differ diff --git a/new/data/images/m15BPT.png b/new/data/images/m15BPT.png new file mode 100644 index 00000000..f4cbdac8 Binary files /dev/null and b/new/data/images/m15BPT.png differ diff --git a/new/data/images/m15BRareStamp.png b/new/data/images/m15BRareStamp.png new file mode 100644 index 00000000..eb8a2458 Binary files /dev/null and b/new/data/images/m15BRareStamp.png differ diff --git a/new/data/images/m15CFull.png b/new/data/images/m15CFull.png new file mode 100644 index 00000000..e37fce1e Binary files /dev/null and b/new/data/images/m15CFull.png differ diff --git a/new/data/images/m15CLegendary.png b/new/data/images/m15CLegendary.png new file mode 100644 index 00000000..ebddc01c Binary files /dev/null and b/new/data/images/m15CLegendary.png differ diff --git a/new/data/images/m15CPT.png b/new/data/images/m15CPT.png new file mode 100644 index 00000000..4fa6c833 Binary files /dev/null and b/new/data/images/m15CPT.png differ diff --git a/new/data/images/m15CRareStamp.png b/new/data/images/m15CRareStamp.png new file mode 100644 index 00000000..ca5bfbfd Binary files /dev/null and b/new/data/images/m15CRareStamp.png differ diff --git a/new/data/images/m15GFull.png b/new/data/images/m15GFull.png new file mode 100644 index 00000000..cdf92e69 Binary files /dev/null and b/new/data/images/m15GFull.png differ diff --git a/new/data/images/m15GLegendary.png b/new/data/images/m15GLegendary.png new file mode 100644 index 00000000..a37d48fd Binary files /dev/null and b/new/data/images/m15GLegendary.png differ diff --git a/new/data/images/m15GPT.png b/new/data/images/m15GPT.png new file mode 100644 index 00000000..f553b708 Binary files /dev/null and b/new/data/images/m15GPT.png differ diff --git a/new/data/images/m15GRareStamp.png b/new/data/images/m15GRareStamp.png new file mode 100644 index 00000000..3e4cd6cd Binary files /dev/null and b/new/data/images/m15GRareStamp.png differ diff --git a/new/data/images/m15MFull.png b/new/data/images/m15MFull.png new file mode 100644 index 00000000..28c4ff65 Binary files /dev/null and b/new/data/images/m15MFull.png differ diff --git a/new/data/images/m15MLegendary.png b/new/data/images/m15MLegendary.png new file mode 100644 index 00000000..c6328cdf Binary files /dev/null and b/new/data/images/m15MLegendary.png differ diff --git a/new/data/images/m15MPT.png b/new/data/images/m15MPT.png new file mode 100644 index 00000000..163d7330 Binary files /dev/null and b/new/data/images/m15MPT.png differ diff --git a/new/data/images/m15MRareStamp.png b/new/data/images/m15MRareStamp.png new file mode 100644 index 00000000..63313a57 Binary files /dev/null and b/new/data/images/m15MRareStamp.png differ diff --git a/new/data/images/m15MaskFrame.png b/new/data/images/m15MaskFrame.png new file mode 100644 index 00000000..afd61b47 Binary files /dev/null and b/new/data/images/m15MaskFrame.png differ diff --git a/new/data/images/m15MaskPinline.png b/new/data/images/m15MaskPinline.png new file mode 100644 index 00000000..8a23389d Binary files /dev/null and b/new/data/images/m15MaskPinline.png differ diff --git a/new/data/images/m15MaskRules.png b/new/data/images/m15MaskRules.png new file mode 100644 index 00000000..7dd26950 Binary files /dev/null and b/new/data/images/m15MaskRules.png differ diff --git a/new/data/images/m15MaskTitle.png b/new/data/images/m15MaskTitle.png new file mode 100644 index 00000000..335d0ca5 Binary files /dev/null and b/new/data/images/m15MaskTitle.png differ diff --git a/new/data/images/m15MaskType.png b/new/data/images/m15MaskType.png new file mode 100644 index 00000000..78ee4eb9 Binary files /dev/null and b/new/data/images/m15MaskType.png differ diff --git a/new/data/images/m15RFull.png b/new/data/images/m15RFull.png new file mode 100644 index 00000000..8e6a1956 Binary files /dev/null and b/new/data/images/m15RFull.png differ diff --git a/new/data/images/m15RLegendary.png b/new/data/images/m15RLegendary.png new file mode 100644 index 00000000..9d32d2b0 Binary files /dev/null and b/new/data/images/m15RLegendary.png differ diff --git a/new/data/images/m15RPT.png b/new/data/images/m15RPT.png new file mode 100644 index 00000000..255cf8b8 Binary files /dev/null and b/new/data/images/m15RPT.png differ diff --git a/new/data/images/m15RRareStamp.png b/new/data/images/m15RRareStamp.png new file mode 100644 index 00000000..3430bf60 Binary files /dev/null and b/new/data/images/m15RRareStamp.png differ diff --git a/new/data/images/m15UFull.png b/new/data/images/m15UFull.png new file mode 100644 index 00000000..3b4ef97d Binary files /dev/null and b/new/data/images/m15UFull.png differ diff --git a/new/data/images/m15ULegendary.png b/new/data/images/m15ULegendary.png new file mode 100644 index 00000000..c4014aba Binary files /dev/null and b/new/data/images/m15ULegendary.png differ diff --git a/new/data/images/m15UPT.png b/new/data/images/m15UPT.png new file mode 100644 index 00000000..e9f38eea Binary files /dev/null and b/new/data/images/m15UPT.png differ diff --git a/new/data/images/m15URareStamp.png b/new/data/images/m15URareStamp.png new file mode 100644 index 00000000..f7ea61ae Binary files /dev/null and b/new/data/images/m15URareStamp.png differ diff --git a/new/data/images/m15WFull.png b/new/data/images/m15WFull.png new file mode 100644 index 00000000..55129369 Binary files /dev/null and b/new/data/images/m15WFull.png differ diff --git a/new/data/images/m15WLegendary.png b/new/data/images/m15WLegendary.png new file mode 100644 index 00000000..c38f942f Binary files /dev/null and b/new/data/images/m15WLegendary.png differ diff --git a/new/data/images/m15WPT.png b/new/data/images/m15WPT.png new file mode 100644 index 00000000..6480a390 Binary files /dev/null and b/new/data/images/m15WPT.png differ diff --git a/new/data/images/m15WRareStamp.png b/new/data/images/m15WRareStamp.png new file mode 100644 index 00000000..bd677a7d Binary files /dev/null and b/new/data/images/m15WRareStamp.png differ diff --git a/new/data/images/manaSymbols/0.png b/new/data/images/manaSymbols/0.png new file mode 100644 index 00000000..af88e794 Binary files /dev/null and b/new/data/images/manaSymbols/0.png differ diff --git a/new/data/images/manaSymbols/1.png b/new/data/images/manaSymbols/1.png new file mode 100644 index 00000000..82e78834 Binary files /dev/null and b/new/data/images/manaSymbols/1.png differ diff --git a/new/data/images/manaSymbols/10.png b/new/data/images/manaSymbols/10.png new file mode 100644 index 00000000..3e690aa2 Binary files /dev/null and b/new/data/images/manaSymbols/10.png differ diff --git a/new/data/images/manaSymbols/11.png b/new/data/images/manaSymbols/11.png new file mode 100644 index 00000000..8783c2bb Binary files /dev/null and b/new/data/images/manaSymbols/11.png differ diff --git a/new/data/images/manaSymbols/12.png b/new/data/images/manaSymbols/12.png new file mode 100644 index 00000000..74fc1965 Binary files /dev/null and b/new/data/images/manaSymbols/12.png differ diff --git a/new/data/images/manaSymbols/13.png b/new/data/images/manaSymbols/13.png new file mode 100644 index 00000000..6af5e76c Binary files /dev/null and b/new/data/images/manaSymbols/13.png differ diff --git a/new/data/images/manaSymbols/14.png b/new/data/images/manaSymbols/14.png new file mode 100644 index 00000000..778e71c6 Binary files /dev/null and b/new/data/images/manaSymbols/14.png differ diff --git a/new/data/images/manaSymbols/15.png b/new/data/images/manaSymbols/15.png new file mode 100644 index 00000000..0e2c368c Binary files /dev/null and b/new/data/images/manaSymbols/15.png differ diff --git a/new/data/images/manaSymbols/16.png b/new/data/images/manaSymbols/16.png new file mode 100644 index 00000000..fe808e5e Binary files /dev/null and b/new/data/images/manaSymbols/16.png differ diff --git a/new/data/images/manaSymbols/17.png b/new/data/images/manaSymbols/17.png new file mode 100644 index 00000000..f91a58f9 Binary files /dev/null and b/new/data/images/manaSymbols/17.png differ diff --git a/new/data/images/manaSymbols/18.png b/new/data/images/manaSymbols/18.png new file mode 100644 index 00000000..723eb4cf Binary files /dev/null and b/new/data/images/manaSymbols/18.png differ diff --git a/new/data/images/manaSymbols/19.png b/new/data/images/manaSymbols/19.png new file mode 100644 index 00000000..dae11a22 Binary files /dev/null and b/new/data/images/manaSymbols/19.png differ diff --git a/new/data/images/manaSymbols/2.png b/new/data/images/manaSymbols/2.png new file mode 100644 index 00000000..b3d82fcb Binary files /dev/null and b/new/data/images/manaSymbols/2.png differ diff --git a/new/data/images/manaSymbols/20.png b/new/data/images/manaSymbols/20.png new file mode 100644 index 00000000..526ca221 Binary files /dev/null and b/new/data/images/manaSymbols/20.png differ diff --git a/new/data/images/manaSymbols/21.png b/new/data/images/manaSymbols/21.png new file mode 100644 index 00000000..a1d9c533 Binary files /dev/null and b/new/data/images/manaSymbols/21.png differ diff --git a/new/data/images/manaSymbols/22.png b/new/data/images/manaSymbols/22.png new file mode 100644 index 00000000..857e726e Binary files /dev/null and b/new/data/images/manaSymbols/22.png differ diff --git a/new/data/images/manaSymbols/23.png b/new/data/images/manaSymbols/23.png new file mode 100644 index 00000000..80ae2b7a Binary files /dev/null and b/new/data/images/manaSymbols/23.png differ diff --git a/new/data/images/manaSymbols/24.png b/new/data/images/manaSymbols/24.png new file mode 100644 index 00000000..dd85d92a Binary files /dev/null and b/new/data/images/manaSymbols/24.png differ diff --git a/new/data/images/manaSymbols/25.png b/new/data/images/manaSymbols/25.png new file mode 100644 index 00000000..2a268369 Binary files /dev/null and b/new/data/images/manaSymbols/25.png differ diff --git a/new/data/images/manaSymbols/26.png b/new/data/images/manaSymbols/26.png new file mode 100644 index 00000000..6b6e6a0e Binary files /dev/null and b/new/data/images/manaSymbols/26.png differ diff --git a/new/data/images/manaSymbols/27.png b/new/data/images/manaSymbols/27.png new file mode 100644 index 00000000..0531ac2d Binary files /dev/null and b/new/data/images/manaSymbols/27.png differ diff --git a/new/data/images/manaSymbols/28.png b/new/data/images/manaSymbols/28.png new file mode 100644 index 00000000..3a0dbe05 Binary files /dev/null and b/new/data/images/manaSymbols/28.png differ diff --git a/new/data/images/manaSymbols/29.png b/new/data/images/manaSymbols/29.png new file mode 100644 index 00000000..4e393bec Binary files /dev/null and b/new/data/images/manaSymbols/29.png differ diff --git a/new/data/images/manaSymbols/3.png b/new/data/images/manaSymbols/3.png new file mode 100644 index 00000000..a4aaedc6 Binary files /dev/null and b/new/data/images/manaSymbols/3.png differ diff --git a/new/data/images/manaSymbols/30.png b/new/data/images/manaSymbols/30.png new file mode 100644 index 00000000..58101dea Binary files /dev/null and b/new/data/images/manaSymbols/30.png differ diff --git a/new/data/images/manaSymbols/31.png b/new/data/images/manaSymbols/31.png new file mode 100644 index 00000000..373d75d9 Binary files /dev/null and b/new/data/images/manaSymbols/31.png differ diff --git a/new/data/images/manaSymbols/32.png b/new/data/images/manaSymbols/32.png new file mode 100644 index 00000000..68a07790 Binary files /dev/null and b/new/data/images/manaSymbols/32.png differ diff --git a/new/data/images/manaSymbols/33.png b/new/data/images/manaSymbols/33.png new file mode 100644 index 00000000..913b43fe Binary files /dev/null and b/new/data/images/manaSymbols/33.png differ diff --git a/new/data/images/manaSymbols/34.png b/new/data/images/manaSymbols/34.png new file mode 100644 index 00000000..c9b83bcb Binary files /dev/null and b/new/data/images/manaSymbols/34.png differ diff --git a/new/data/images/manaSymbols/35.png b/new/data/images/manaSymbols/35.png new file mode 100644 index 00000000..98c7fbf5 Binary files /dev/null and b/new/data/images/manaSymbols/35.png differ diff --git a/new/data/images/manaSymbols/36.png b/new/data/images/manaSymbols/36.png new file mode 100644 index 00000000..fcdd4393 Binary files /dev/null and b/new/data/images/manaSymbols/36.png differ diff --git a/new/data/images/manaSymbols/37.png b/new/data/images/manaSymbols/37.png new file mode 100644 index 00000000..0c1d2da5 Binary files /dev/null and b/new/data/images/manaSymbols/37.png differ diff --git a/new/data/images/manaSymbols/38.png b/new/data/images/manaSymbols/38.png new file mode 100644 index 00000000..216251fa Binary files /dev/null and b/new/data/images/manaSymbols/38.png differ diff --git a/new/data/images/manaSymbols/39.png b/new/data/images/manaSymbols/39.png new file mode 100644 index 00000000..dc47735a Binary files /dev/null and b/new/data/images/manaSymbols/39.png differ diff --git a/new/data/images/manaSymbols/4.png b/new/data/images/manaSymbols/4.png new file mode 100644 index 00000000..08d75a97 Binary files /dev/null and b/new/data/images/manaSymbols/4.png differ diff --git a/new/data/images/manaSymbols/40.png b/new/data/images/manaSymbols/40.png new file mode 100644 index 00000000..8574ed78 Binary files /dev/null and b/new/data/images/manaSymbols/40.png differ diff --git a/new/data/images/manaSymbols/41.png b/new/data/images/manaSymbols/41.png new file mode 100644 index 00000000..821e894a Binary files /dev/null and b/new/data/images/manaSymbols/41.png differ diff --git a/new/data/images/manaSymbols/42.png b/new/data/images/manaSymbols/42.png new file mode 100644 index 00000000..9c8aab59 Binary files /dev/null and b/new/data/images/manaSymbols/42.png differ diff --git a/new/data/images/manaSymbols/43.png b/new/data/images/manaSymbols/43.png new file mode 100644 index 00000000..471b974c Binary files /dev/null and b/new/data/images/manaSymbols/43.png differ diff --git a/new/data/images/manaSymbols/44.png b/new/data/images/manaSymbols/44.png new file mode 100644 index 00000000..68ccd442 Binary files /dev/null and b/new/data/images/manaSymbols/44.png differ diff --git a/new/data/images/manaSymbols/45.png b/new/data/images/manaSymbols/45.png new file mode 100644 index 00000000..c8526e5c Binary files /dev/null and b/new/data/images/manaSymbols/45.png differ diff --git a/new/data/images/manaSymbols/46.png b/new/data/images/manaSymbols/46.png new file mode 100644 index 00000000..776fa89d Binary files /dev/null and b/new/data/images/manaSymbols/46.png differ diff --git a/new/data/images/manaSymbols/47.png b/new/data/images/manaSymbols/47.png new file mode 100644 index 00000000..235144f0 Binary files /dev/null and b/new/data/images/manaSymbols/47.png differ diff --git a/new/data/images/manaSymbols/48.png b/new/data/images/manaSymbols/48.png new file mode 100644 index 00000000..357dce5d Binary files /dev/null and b/new/data/images/manaSymbols/48.png differ diff --git a/new/data/images/manaSymbols/49.png b/new/data/images/manaSymbols/49.png new file mode 100644 index 00000000..fa50da49 Binary files /dev/null and b/new/data/images/manaSymbols/49.png differ diff --git a/new/data/images/manaSymbols/5.png b/new/data/images/manaSymbols/5.png new file mode 100644 index 00000000..f6930ee8 Binary files /dev/null and b/new/data/images/manaSymbols/5.png differ diff --git a/new/data/images/manaSymbols/50.png b/new/data/images/manaSymbols/50.png new file mode 100644 index 00000000..56392649 Binary files /dev/null and b/new/data/images/manaSymbols/50.png differ diff --git a/new/data/images/manaSymbols/51.png b/new/data/images/manaSymbols/51.png new file mode 100644 index 00000000..3b098dcc Binary files /dev/null and b/new/data/images/manaSymbols/51.png differ diff --git a/new/data/images/manaSymbols/52.png b/new/data/images/manaSymbols/52.png new file mode 100644 index 00000000..fba0f73e Binary files /dev/null and b/new/data/images/manaSymbols/52.png differ diff --git a/new/data/images/manaSymbols/53.png b/new/data/images/manaSymbols/53.png new file mode 100644 index 00000000..5ce5d5ab Binary files /dev/null and b/new/data/images/manaSymbols/53.png differ diff --git a/new/data/images/manaSymbols/54.png b/new/data/images/manaSymbols/54.png new file mode 100644 index 00000000..9dbedb27 Binary files /dev/null and b/new/data/images/manaSymbols/54.png differ diff --git a/new/data/images/manaSymbols/55.png b/new/data/images/manaSymbols/55.png new file mode 100644 index 00000000..a199cc76 Binary files /dev/null and b/new/data/images/manaSymbols/55.png differ diff --git a/new/data/images/manaSymbols/56.png b/new/data/images/manaSymbols/56.png new file mode 100644 index 00000000..4b6c92cd Binary files /dev/null and b/new/data/images/manaSymbols/56.png differ diff --git a/new/data/images/manaSymbols/57.png b/new/data/images/manaSymbols/57.png new file mode 100644 index 00000000..d03c020b Binary files /dev/null and b/new/data/images/manaSymbols/57.png differ diff --git a/new/data/images/manaSymbols/58.png b/new/data/images/manaSymbols/58.png new file mode 100644 index 00000000..aef16f82 Binary files /dev/null and b/new/data/images/manaSymbols/58.png differ diff --git a/new/data/images/manaSymbols/59.png b/new/data/images/manaSymbols/59.png new file mode 100644 index 00000000..a051fa3e Binary files /dev/null and b/new/data/images/manaSymbols/59.png differ diff --git a/new/data/images/manaSymbols/6.png b/new/data/images/manaSymbols/6.png new file mode 100644 index 00000000..09f74d0d Binary files /dev/null and b/new/data/images/manaSymbols/6.png differ diff --git a/new/data/images/manaSymbols/60.png b/new/data/images/manaSymbols/60.png new file mode 100644 index 00000000..3f8e6565 Binary files /dev/null and b/new/data/images/manaSymbols/60.png differ diff --git a/new/data/images/manaSymbols/61.png b/new/data/images/manaSymbols/61.png new file mode 100644 index 00000000..975af655 Binary files /dev/null and b/new/data/images/manaSymbols/61.png differ diff --git a/new/data/images/manaSymbols/62.png b/new/data/images/manaSymbols/62.png new file mode 100644 index 00000000..e9583ee8 Binary files /dev/null and b/new/data/images/manaSymbols/62.png differ diff --git a/new/data/images/manaSymbols/63.png b/new/data/images/manaSymbols/63.png new file mode 100644 index 00000000..f3b4c60c Binary files /dev/null and b/new/data/images/manaSymbols/63.png differ diff --git a/new/data/images/manaSymbols/7.png b/new/data/images/manaSymbols/7.png new file mode 100644 index 00000000..51e4783c Binary files /dev/null and b/new/data/images/manaSymbols/7.png differ diff --git a/new/data/images/manaSymbols/8.png b/new/data/images/manaSymbols/8.png new file mode 100644 index 00000000..3aefd2b9 Binary files /dev/null and b/new/data/images/manaSymbols/8.png differ diff --git a/new/data/images/manaSymbols/9.png b/new/data/images/manaSymbols/9.png new file mode 100644 index 00000000..e4ad3213 Binary files /dev/null and b/new/data/images/manaSymbols/9.png differ diff --git a/new/data/images/secondary.png b/new/data/images/secondary.png new file mode 100644 index 00000000..d254490d Binary files /dev/null and b/new/data/images/secondary.png differ diff --git a/new/data/images/stamp.png b/new/data/images/stamp.png new file mode 100644 index 00000000..e0561ee3 Binary files /dev/null and b/new/data/images/stamp.png differ diff --git a/new/data/imgFoil.png b/new/data/imgFoil.png new file mode 100644 index 00000000..4c1d7624 Binary files /dev/null and b/new/data/imgFoil.png differ diff --git a/new/data/m15 - Shortcut.lnk b/new/data/m15 - Shortcut.lnk new file mode 100644 index 00000000..a4385e2b Binary files /dev/null and b/new/data/m15 - Shortcut.lnk differ diff --git a/new/data/scripts/colors.js b/new/data/scripts/colors.js new file mode 100644 index 00000000..8242b0e8 --- /dev/null +++ b/new/data/scripts/colors.js @@ -0,0 +1,20 @@ +//Cycles through a rainbow! +setInterval(changeColor, 100) +var colorShiftingClock = 0 +var colorFrequency = 2 * Math.PI / 600 +var numberOfColors = 1 +function changeColor() { + for (var i = 1; i <= numberOfColors; i ++) { + var rgbValues = indexToColor(colorShiftingClock + ((i - 1) * 2 * Math.PI / numberOfColors / colorFrequency), colorFrequency) + document.documentElement.style.setProperty("--shifting-color-" + i, "rgb(" + rgbValues[0] + "," + rgbValues[1] + "," + rgbValues[2] + ")") + } + var rgbLightValues = indexToColor(colorShiftingClock + ((i - 1) * 2 * Math.PI / numberOfColors / colorFrequency), colorFrequency) + document.documentElement.style.setProperty("--shifting-color-1-light", "rgb(" + parseInt(rgbLightValues[0] + 150) + "," + parseInt(rgbLightValues[1] + 150) + "," + parseInt(rgbLightValues[2] + 150) + ")") + colorShiftingClock += 1 +} +function indexToColor(colorIndex, frequency) { + var red = Math.sin(colorIndex * frequency + 0) * 127 + 128 + var green = Math.sin(colorIndex * frequency + 2 * Math.PI / 3) * 127 + 128 + var blue = Math.sin(colorIndex * frequency + 4 * Math.PI / 3) * 127 + 128 + return [red, green, blue] +} \ No newline at end of file diff --git a/new/data/scripts/setCodeList.js b/new/data/scripts/setCodeList.js new file mode 100644 index 00000000..eacc642b --- /dev/null +++ b/new/data/scripts/setCodeList.js @@ -0,0 +1,106 @@ +/* +This is a list of set codes. +It has all been typed manually, so there are possibly errors, but let's hope not! +Duplicates found and removed: ORI, W17, CED +Sets not found: Astral, Deckmasters, Duels of the Planeswalkers +The codes have been resourced from the following: +https://en.wikipedia.org/wiki/List_of_Magic:_The_Gathering_sets +and +https://magic.wizards.com/en/products/card-set-archive +Last updated: 9-8-19 +Last set added: C19 +*/ +//Common through Rare +var setCodeListPreMythic = ['1E', '2E', '2U', '3E', '4E', '5E', '6E', '7E', '8ED', '9ED', '10E', 'AN', +'AQ', 'LE', 'DK', 'FE', 'HM', 'IA', 'AL', 'MI', 'VI', 'WL', 'TE', 'ST', 'EX', 'UZ', 'GU', 'AP', 'OD', +'TOR', 'JUD', 'ONS', 'LGN', 'SCG', 'MRD', 'DST', '5DN', 'CHK', 'BOK', 'SOK', 'RAV', 'GPT', 'DIS', 'CSP', +'TSP', 'PLC', 'FUT', 'LRW', 'MOR', 'SHM', 'EVE', 'PO', 'P2', 'PK', 'P3', 'P4', 'CH', 'BR', 'BD', 'EVG', +'UG', 'UNH', 'MED', 'ME2', 'ME3', 'ME4', 'HOP'] +//Common through Mythic +var setCodeListPostMythic = ['M10', 'M11', 'M12', 'M13', 'M14', 'M15', 'ORI', 'M19', 'ALA', 'CON', +'ARB', 'ZEN', 'WWK', 'ROE', 'SOM', 'MBS', 'NPH', 'ISD', 'DKA', 'AVR', 'RTR', 'GTC', 'DGM', 'THS', 'BNG', +'JOU', 'KTK', 'FRF', 'DTK', 'BFZ', 'OGW', 'SOI', 'EMN', 'KLD', 'AER', 'AKH', 'HOU', 'XLN', 'RIX', 'DOM', +'GRN', 'RNA', 'MH1', 'GS1', 'MD1', 'DD2', 'DDC', 'DDD', 'DDE', 'DDF', 'DDG', 'DDH', 'DDI', 'DDJ', 'DDK', +'DDL', 'DDM', 'DDN', 'DDP', 'DDQ', 'DDR', 'DDS', 'DDT', 'DDU', 'SS1', 'H09', 'PD2', 'PD3', 'MMA', 'MM2', +'EMA', 'MM3', 'IMA', 'A25', 'UMA', 'PC2', 'PCA', 'ARC', 'E01', 'CMD', 'CM1', 'C13', 'C14', 'C15', +'C16', 'CMA', 'C17', 'CM2', 'C18', 'CNS', 'CN2', 'E02', 'BBD', 'UST', 'VMA', 'TPR', 'W16', 'W17', +'GK1_IZZET', 'GK1_SELESN', 'GK1_BOROS', 'GK1_GOLGAR', 'GK2_RAKDOS', 'GK2_AZORIU', 'GK2_SIMIC', +'GK2_GRUUL', 'GK2_ORZHOV', 'WAR', 'M20', 'C19'] +//Only Rare +var setCodeListRareOnly = ['DRB'] +//Only Mythic +var setCodeListMythicOnly = ['V09', 'V10', 'V11', 'V12', 'V13', 'V14', 'V15', 'V16', 'V17', 'EXP', 'MPS_GRN'] +//Only Special +var setCodeListSpecialOnly = ['MPS_KLD', 'MPS_AKH'] +//Only Rare / Mythic +var setCodeListRareMythicOnly = ['SS2'] + +randomSet(false) +function randomSet(updateHTML = true) { + var totalSetCount = setCodeListPreMythic.length + setCodeListPostMythic.length + setCodeListRareOnly.length + setCodeListMythicOnly.length + setCodeListSpecialOnly.length + setCodeListRareMythicOnly.length + var setIndex = Math.floor(Math.random() * (totalSetCount - 1)) + var possibleRarities, rarity, set + if (setIndex < setCodeListPreMythic.length) { + set = setCodeListPreMythic[setIndex] + possibleRarities = ["C", "U", "R"] + } else { + setIndex -= setCodeListPreMythic.length + if (setIndex < setCodeListPostMythic.length) { + set = setCodeListPostMythic[setIndex] + possibleRarities = ["C", "U", "R", "M"] + } else { + setIndex -= setCodeListPostMythic.length + if (setIndex < setCodeListRareOnly.length) { + set = setCodeListRareOnly[setIndex] + possibleRarities = ["R"] + } else { + setIndex -= setCodeListRareOnly.length + if (setIndex < setCodeListMythicOnly.length) { + set = setCodeListMythicOnly[setIndex] + possibleRarities = ["M"] + } else { + setIndex -= setCodeListMythicOnly.length + if (setIndex < setCodeListSpecialOnly.length) { + set = setCodeListSpecialOnly[setIndex] + possibleRarities = ["S"] + } else { + setIndex -= setCodeListSpecialOnly.length + if (setIndex < setCodeListRareMythicOnly.length) { + set = setCodeListRareMythicOnly[setIndex] + possibleRarities = ["M", "R"] + } else { + return + } + } + } + } + } + } + var findingRarity = true + while (findingRarity) { + switch(Math.floor(Math.random() * 5)) { + case 4: + rarity = "S" + break + case 3: + rarity = "M" + break + case 2: + rarity = "R" + break + case 1: + rarity = "U" + break + default: + rarity = "C" + } + if (possibleRarities.includes(rarity)) { + findingRarity = false + } + } + if (updateHTML) { + document.getElementById("inputSetCode").value = set + document.getElementById("inputSetRarity").value = rarity + } + setSymbol.src = "https://cors-anywhere.herokuapp.com/http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=" + set + "&size=large&rarity=" + rarity +} \ No newline at end of file diff --git a/new/data/site/images/48.png b/new/data/site/images/48.png new file mode 100644 index 00000000..357dce5d Binary files /dev/null and b/new/data/site/images/48.png differ diff --git a/new/data/site/images/background.png b/new/data/site/images/background.png new file mode 100644 index 00000000..52a5ff90 Binary files /dev/null and b/new/data/site/images/background.png differ diff --git a/new/data/site/images/background.xcf b/new/data/site/images/background.xcf new file mode 100644 index 00000000..02a34cef Binary files /dev/null and b/new/data/site/images/background.xcf differ diff --git a/new/data/site/images/hex.png b/new/data/site/images/hex.png new file mode 100644 index 00000000..fc68878d Binary files /dev/null and b/new/data/site/images/hex.png differ diff --git a/new/data/site/images/layerBackground.png b/new/data/site/images/layerBackground.png new file mode 100644 index 00000000..fb1a1cdc Binary files /dev/null and b/new/data/site/images/layerBackground.png differ diff --git a/new/data/site/images/lowpoly.png b/new/data/site/images/lowpoly.png new file mode 100644 index 00000000..1381b023 Binary files /dev/null and b/new/data/site/images/lowpoly.png differ diff --git a/new/data/site/images/strip.png b/new/data/site/images/strip.png new file mode 100644 index 00000000..8b29e968 Binary files /dev/null and b/new/data/site/images/strip.png differ diff --git a/new/data/site/images/strip.xcf b/new/data/site/images/strip.xcf new file mode 100644 index 00000000..48c51240 Binary files /dev/null and b/new/data/site/images/strip.xcf differ diff --git a/new/data/site/main.js b/new/data/site/main.js new file mode 100644 index 00000000..d58e940e --- /dev/null +++ b/new/data/site/main.js @@ -0,0 +1,633 @@ +//============================================// +// Card Conjurer, by Kyle Burton // +//============================================// +//Define some variables +var cardWidth = 750, cardHeight = 1050 +var version = {} +var date = new Date() +document.getElementById("inputInfoNumber").value = date.getFullYear() +//Make all the canvases and their contexts +var mainCanvas = document.getElementById("mainCanvas") +mainCanvas.width = cardWidth +mainCanvas.height = cardHeight +var mainContext = mainCanvas.getContext("2d") +var canvasList = ["card", "mask", "image", "text", "paragraph", "line", "transparent", "crop", "bottomInfo", "setSymbol"] +for (var i = 0; i < canvasList.length; i++) { + window[canvasList[i] + "Canvas"] = document.createElement("canvas") + window[canvasList[i] + "Canvas"].width = cardWidth + window[canvasList[i] + "Canvas"].height = cardHeight + window[canvasList[i] + "Context"] = window[canvasList[i] + "Canvas"].getContext("2d") +} +//Create the arrays that keeps track of what parts of the card are what +var cardMasterTypes = [] +var cardMasterImages = [] +//Mana symbol Array setup +var manaSymbolCodeList = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "w", "u", "b", "r", "g", "2w", "2u", "2b", "2r", "2g", "pw", "pu", "pb", "pr", "pg", "wu", "wb", "ub", "ur", "br", "bg", "rg", "rw", "gw", "gu", "x", "s", "c", "t","untap", "e", "y", "z", "1/2", "inf", "chaos", "plane", "l+", "l-", "l0", "oldtap", "artistbrush", "bar"] +var manaSymbolImageList = [] +//Manually create a few important images +var cardArt = new Image(), setSymbol = new Image() +cardArt.crossOrigin = "anonymous" +setSymbol.crossOrigin = "anonymous" +setSymbol.onload = function() { + updateSetSymbolCanvas() +} +cardArt.onload = function() { + updateCardCanvas() +} +//Load the mana symbol images +loadManaSymbolImages() +//Load the CSV full of image data +loadImageSpreadsheet() + + +//============================================// +// Functions // +//============================================// +//Load the CSV full of image data +function loadImageSpreadsheet() { + var xhttp = new XMLHttpRequest() + xhttp.onreadystatechange = function() { + if (this.readyState == 4) { + var rawText = xhttp.responseText.split("\n") + for (var i = 0; i < rawText.length; i ++) { + for (var n = 0; n < rawText[0].split(",").length; n++) { + if (i == 0) { + window[rawText[0].split(",")[n].trim() + "Array"] = [] + } else { + window[rawText[0].split(",")[n].trim() + "Array"][i - 1] = rawText[i].split(",")[n].trim() + } + } + if (i == rawText.length - 1) { + init() + } + } + } + } + xhttp.open("GET", "data/images/imageSpreadsheet.csv", true) + xhttp.send() +} +//After the csv has been loaded, the init function runs. +function init() { + //Loads the base version (m15) + changeVersionTo("m15") + //Loads all the masks + for (var i = 0; i < colorArray.length; i ++) { + if (colorArray[i] == "Mask") { + loadImage(i) + } + } + //Runs any tests. This should not do anything when published. + setTimeout(testFunction, 100) + checkCookies() +} +//Loads an image. Only actually loads images the first time each image is loaded, otherwise assigns it. +function loadImage(index, target = "none") { + if (window[nameArray[index]] == undefined) { + window[nameArray[index]] = new customImage(index, target) + } else { + addToCardMaster(index, target) + } +} +//Special image object +function customImage(index, target) { + this.loaded = false + this.index = index + this.image = new Image() + this.image.src = "data/images/" + nameArray[index] + ".png" + this.image.onload = function() { + window[nameArray[index]].loaded = true + addToCardMaster(index, target) + } +} +//Adds an image to the card master. Replaces the previous one if it already existed +function addToCardMaster(index, target) { + if (target == "preview") { + document.getElementById("imgPreview").src = window[nameArray[index]].image.src + return + } + if ((target == typeArray[index]) || (secondaryArray[index] && target.replace("Secondary", "")) == typeArray[index] || (typeArray[index] == "Full")) { + if (cardMasterTypes.includes(target)) { + cardMasterImages[cardMasterTypes.indexOf(target)] = window[nameArray[index]] + } else { + cardMasterImages[cardMasterTypes.length] = window[nameArray[index]] + cardMasterTypes[cardMasterTypes.length] = target + } + cardMasterUpdated() + } +} +//Runs through all the assigned card images and draws them in +function cardMasterUpdated() { + imageContext.clearRect(0, 0, cardWidth, cardHeight) + for (var i = 0; i < version.typeOrder.length; i ++) { + if (cardMasterTypes.includes(version.typeOrder[i])) { + imageContext.mask(cardMasterTypes.indexOf(version.typeOrder[i])) + } + } +} +//Custom function that draws onto a canvas using masks +CanvasRenderingContext2D.prototype.mask = function(cardMasterIndex) { + maskContext.clearRect(0, 0, cardWidth, cardHeight) + maskContext.globalCompositeOperation = "source-over" + if (cardMasterTypes[cardMasterIndex].includes("Secondary")) { + maskContext.drawImage(window[nameArray[nameArray.indexOf("secondary")]].image, 0, 0, cardWidth, cardHeight) + maskContext.globalCompositeOperation = "source-in" + } + var maskToUse = window[versionArray[cardMasterImages[cardMasterIndex].index] + "Mask" + cardMasterTypes[cardMasterIndex].replace("Secondary", "")] + if (maskToUse != undefined) { + maskContext.drawImage(maskToUse.image, xArray[maskToUse.index] * cardWidth, yArray[maskToUse.index] * cardHeight, widthArray[maskToUse.index] * cardWidth, heightArray[maskToUse.index] * cardHeight) + maskContext.globalCompositeOperation = "source-in" + } + var mainImageIndex = cardMasterImages[cardMasterIndex].index + maskContext.drawImage(cardMasterImages[cardMasterIndex].image, xArray[mainImageIndex] * cardWidth, yArray[mainImageIndex] * cardHeight, widthArray[mainImageIndex] * cardWidth, heightArray[mainImageIndex] * cardHeight) + this.drawImage(maskCanvas, 0, 0, cardWidth, cardHeight) + if (cardMasterTypes[cardMasterIndex].includes("RareStamp")) { + this.drawImage(window[nameArray[nameArray.indexOf("stamp")]].image, version.rareStampX, version.rareStampY, version.rareStampWidth, version.rareStampHeight) + } + updateImageCanvas() +} +//All the canvas functions +function updateImageCanvas() { + //post processing? + updateBottomInfoCanvas() +} +function updateTextCanvas() { + //post processing? + updateCardCanvas() +} +//Rewrites all the text! +function updateText() { + version.textList[whichTextIndex][1] = document.getElementById("inputText").value + textContext.clearRect(0, 0, cardWidth, cardHeight) + for (var i = 0; i < version.textList.length; i ++) { + var waitUntilIAmDone = textContext.writeText(version.textList[i][1], version.textList[i][2], version.textList[i][3], version.textList[i][4], version.textList[i][5], version.textList[i][6], version.textList[i][7], version.textList[i][8], version.textList[i][9]) + updateTextCanvas() + } +} +//figures out the placing of the set symbol +function updateSetSymbolCanvas() { + setSymbolContext.clearRect(0, 0, cardWidth, cardHeight) + var setSymbolWidth, setSymbolHeight, setSymbolX, setSymbolY + if (version.setSymbolWidth / version.setSymbolHeight < setSymbol.width / setSymbol.height) { + //wider + setSymbolWidth = version.setSymbolWidth + setSymbolHeight = version.setSymbolWidth / setSymbol.width * setSymbol.height + setSymbolX = version.setSymbolRight - setSymbolWidth + setSymbolY = version.setSymbolVertical - setSymbolHeight / 2 + } else { + //taller + setSymbolHeight = version.setSymbolHeight + setSymbolWidth = version.setSymbolHeight / setSymbol.height * setSymbol.width + setSymbolX = version.setSymbolRight - setSymbolWidth + setSymbolY = version.setSymbolVertical - setSymbolHeight / 2 + } + setSymbolContext.drawImage(setSymbol, setSymbolX, setSymbolY, setSymbolWidth, setSymbolHeight) + updateCardCanvas() +} +//Does the bottom info function! This can be different depending on the version. +function updateBottomInfoCanvas() { + window[version.bottomInfoFunction]() +} +function updateCardCanvas() { + //clear it + cardContext.fillStyle = "black" + cardContext.fillRect(0, 0, cardWidth, cardHeight) + //draw the art, frame, text, mana symbols, set symbol... + cardContext.drawImage(cardArt, version.artX + getValue("inputCardArtX"), version.artY + getValue("inputCardArtY"), cardArt.width * getValue("inputCardArtZoom") / 100, cardArt.height * getValue("inputCardArtZoom") / 100) + cardContext.drawImage(imageCanvas, 0, 0, cardWidth, cardHeight) + cardContext.drawImage(textCanvas, 0, 0, cardWidth, cardHeight) + cardContext.drawImage(bottomInfoCanvas, 0, 0, cardWidth, cardHeight) + cardContext.drawManaCost(document.getElementById("inputManaCost").value, version.manaCostX, version.manaCostY, version.manaCostDiameter, version.manaCostDistance, version.manaCostDirection) + cardContext.drawImage(setSymbolCanvas, 0, 0, cardWidth, cardHeight) + //clear the corners + cardContext.globalCompositeOperation = "destination-out" + cardContext.drawImage(window[nameArray[nameArray.indexOf("corners")]].image, 0, 0, cardWidth, cardHeight) + cardContext.globalCompositeOperation = "source-over" + //paste it to the visible canvas + mainContext.clearRect(0, 0, cardWidth, cardHeight) + mainContext.drawImage(cardCanvas, 0, 0, cardWidth, cardHeight) +} +//Loads an image in from user input +function userLoadImage() { + loadImage(document.getElementById("inputImageIndex").value, "preview") +} +//Enters an image from user input +function userEnterImage() { + loadImage(document.getElementById("inputImageIndex").value, document.getElementById("inputImageType").value) +} +//Removes an image from user input +function userRemoveImage() { + if (cardMasterTypes.includes(document.getElementById("inputImageType").value) && document.getElementById("inputImageType").value != "Full") { + cardMasterImages.splice(cardMasterTypes.indexOf(document.getElementById("inputImageType").value), 1) + cardMasterTypes.splice(cardMasterTypes.indexOf(document.getElementById("inputImageType").value), 1) + cardMasterUpdated() + } +} +//Loads a script +function loadScript(scriptPath){ + var script = document.createElement("script") + script.setAttribute("type","text/javascript") + script.setAttribute("src", scriptPath) + if (typeof script != "undefined") { + document.getElementsByTagName("head")[0].appendChild(script) + } +} +//Adjusts values to the card size +function cwidth(inputWidth) { + return inputWidth / 750 * cardWidth +} +function cheight(inputHeight) { + return inputHeight / 1050 * cardHeight +} +//shortcut for parseInt(document.getElementById("").value) +function getValue(elementId) { + return parseFloat(document.getElementById(elementId).value) +} +//Changes the version +function changeVersionTo(versionToChangeTo) { + loadScript("data/versions/" + versionToChangeTo + "Version.js") +} +function finishChangingVersion() { + document.getElementById("inputImageType").innerHTML = "" + for (var i = 0; i < version.typeOrder.length; i ++) { + document.getElementById("inputImageType").innerHTML += "" + } + for (var i = 0; i < version.textList.length; i ++) { + document.getElementById("inputWhichText").innerHTML += "" + } + hideShowColors(true) + updateText() + updateBottomInfoCanvas() + updateSetSymbolCanvas() +} +//Hides and shows the options in inputImageColor to match the selected type +function hideShowColors(enter = false) { + document.getElementById("inputImageIndex").innerHTML = "" + for (var i = 0; i < versionArray.length; i ++) { + if (versionArray[i] == version.currentVersion && (typeArray[i] == document.getElementById("inputImageType").value.replace("Secondary", "") || (typeArray[i] == "Full" && version.typeNotFull.includes(document.getElementById("inputImageType").value) == false)) && colorArray[i] != "Mask") { + document.getElementById("inputImageIndex").innerHTML += "" + } + } + if (enter) { + userEnterImage() + } + userLoadImage() +} +//Custom text function! This acts on any codes and makes things look nice :) +CanvasRenderingContext2D.prototype.writeText = function(text = "", textX = 0, textY = 0, textWidth = cardWidth, textHeight = cardHeight, textFont = "belerenbsc", inputTextSize = 38, textColor="black", other="") { + paragraphContext.clearRect(0, 0, cardWidth, cardHeight) + var textSize = inputTextSize + lineContext.font = textSize + "px " + textFont + lineContext.fillStyle = textColor + var otherParameters = other.split(",") + var outline, shadow = 0, oneLine = false, outlineWidth = 2, textAlign = "left", verticalAlign = true, lineSpace = 1 + for (var i = 0; i < otherParameters.length; i ++) { + eval(otherParameters[i]) + } + lineContext.strokeStyle = outline + lineContext.lineWidth = outlineWidth + var currentLineX = 0 + var currentLineY = textY + textSize * 0.45 + var uniqueSplitter = "9dn57gwbt4sh" + var splitString = text.replace(/ /g, uniqueSplitter + " " + uniqueSplitter).replace(/{/g, uniqueSplitter + "{").replace(/}/g, "}" + uniqueSplitter).split(uniqueSplitter) + splitString[splitString.length] = " " + var lastWordAdded = "" + for (var i = 0; i < splitString.length; i++) { + if (splitString[i] != "") { + var wordToWrite = splitString[i] + var finishLine = false + if (splitString[i].includes("{") && splitString[i].includes("}")) { + //It may be a code + wordToWrite = "" + possibleCodeLower = splitString[i].toLowerCase().replace("{", "").replace("}", "") + if (possibleCodeLower == "line" && !oneline) { + finishLine = true + } else if (possibleCodeLower == "linenospace" && ! oneline) { + finishLine = true + } else if (possibleCodeLower == "bar" || possibleCodeLower == "flavor") { + finishLine = true + var barWidth = manaSymbolImageList[63].width + var barHeight = manaSymbolImageList[63].height + paragraphContext.drawImage(manaSymbolImageList[63], textX + textWidth / 2 - barWidth / 2, currentLineY + textSize * 0.6, barWidth, barHeight) + currentLineY += textSize * 0.8 + if (possibleCodeLower == "flavor") { + lineContext.font = "italic " + (textSize - 3) + "px " + textFont + } + } else if (possibleCodeLower.includes("fontsize")) { + textSize += parseInt(possibleCodeLower.slice(8, possibleCodeLower.length)) + lineContext.font = textSize + "px " + textFont + } else if (possibleCodeLower == "i") { + lineContext.font = "italic " + textSize + "px " + textFont + } else if (possibleCodeLower == "/i") { + lineContext.font = textSize + "px " + textFont + } else if (possibleCodeLower == "center") { + textAlign = "center" + } else if (possibleCodeLower == "right") { + textAlign = "right" + } else if (possibleCodeLower == "left") { + textAlign = "left" + } else if (possibleCodeLower.includes("up")) { + currentLineY -= (parseInt(possibleCodeLower.slice(2, possibleCodeLower.length))) + } else if (possibleCodeLower.includes("down")) { + currentLineY += (parseInt(possibleCodeLower.slice(4, possibleCodeLower.length))) + } else if (possibleCodeLower.includes("left")) { + currentLineX -= (parseInt(possibleCodeLower.slice(4, possibleCodeLower.length))) + } else if (possibleCodeLower.includes("right")) { + currentLineX += (parseInt(possibleCodeLower.slice(5, possibleCodeLower.length))) + } else if (possibleCodeLower == "artistbrush") { + var artistBrushWidth = textSize * 1.2 + lineContext.drawImage(manaSymbolImageList[62], currentLineX, currentLineY - artistBrushWidth * 0.58, artistBrushWidth, artistBrushWidth * 13 / 21) + currentLineX += artistBrushWidth * 1.1 + } else if (possibleCodeLower.includes("font")) { + textFont = possibleCodeLower.slice(5, possibleCodeLower.length) + lineContext.font = textSize + "px " + textFont + } else if (manaSymbolCodeList.includes(possibleCodeLower)) { + //THIS HAS TO BE THE LAST ONE + var manaSymbolDiameter = textSize * 0.77 + lineContext.drawImage(manaSymbolImageList[manaSymbolCodeList.indexOf(possibleCodeLower)], currentLineX, currentLineY - manaSymbolDiameter * 0.95, manaSymbolDiameter, manaSymbolDiameter) + currentLineX += manaSymbolDiameter * 1.02 + } else { + wordToWrite = splitString[i] + } + } + if (wordToWrite != "" || finishLine == true) { + //We're left with a word. Write it. + var currentWordWidth = lineContext.measureText(wordToWrite).width + if (i == splitString.length - 1) { + //forces the last artificially added space to be too wide, making sure the last line is drawn in. + currentWordWidth = textWidth + 1 + } + if (currentLineX + currentWordWidth > textWidth || finishLine) { + //Finish the line + if (oneLine && i != splitString.length - 1) { + lineContext.clearRect(0, 0, cardWidth, cardHeight) + this.writeText(text, textX, textY, textWidth, textHeight, textFont, inputTextSize - 1, textColor, other) + return + } + var alignAdjust = 0 + if (textAlign == "center" || textAlign == "right") { + if (lastWordAdded == " ") { + currentLineX -= textContext.measureText(" ").width + } + if (textAlign == "center") { + alignAdjust = textWidth / 2 - currentLineX / 2 + textX + } else if (textAlign == "right") { + alignAdjust = textWidth + textX - currentLineX + } + } else { + alignAdjust += textX + } + paragraphContext.drawImage(lineCanvas, 0 + alignAdjust, 0, cardWidth, cardHeight) + lineContext.clearRect(0, 0, cardWidth, cardHeight) + currentLineY += textSize * lineSpace + currentLineX = 0 + if (wordToWrite == " ") { + currentWordWidth = 0 + } + } + //Whether or not the current line is finished, write to it. + if (shadow > 0) { + lineContext.fillText(wordToWrite, currentLineX + shadow, currentLineY + shadow) + } + if (outline != undefined) { + lineContext.strokeText(wordToWrite, currentLineX, currentLineY) + } + lineContext.fillText(wordToWrite, currentLineX, currentLineY) + currentLineX += currentWordWidth + lastWordAdded = wordToWrite + } + } + } + verticalAdjust = 0 + if (verticalAlign) { + verticalAdjust = (textHeight + textY - currentLineY + textSize) / 2 + } + this.drawImage(paragraphCanvas, 0, 0 + verticalAdjust, cardWidth, cardHeight) + return "done" +} +//Loads up all the mana symbol images +function loadManaSymbolImages() { + for (var i = 0; i < manaSymbolCodeList.length; i++) { + manaSymbolImageList[i] = new Image() + manaSymbolImageList[i].src = "data/images/manaSymbols/" + i + ".png" + } +} +//Draws a mana cost +CanvasRenderingContext2D.prototype.drawManaCost = function(text, symbolsX, symbolsY, diameter = 50, distance = -50, direction = "horizontal") { + var splitManaCost = text.replace(/{/g, " ").replace(/}/g, " ").split(" ") + var currentSymbolIndex = 0 + var currentX = symbolsX + var currentY = symbolsY + for (var i = splitManaCost.length - 1; i >= 0; i --) { + if (manaSymbolCodeList.includes(splitManaCost[i])) { + if (Array.isArray(direction) && i < direction.length) { + currentX = direction[i][0] + currentY = direction[i][1] + } + this.fillStyle = "black" + this.beginPath() + this.arc(currentX + diameter / 2.1, currentY + diameter / 1.8, diameter / 2, 0, 2 * Math.PI, false) + this.fill() + this.drawImage(manaSymbolImageList[manaSymbolCodeList.indexOf(splitManaCost[i])], currentX, currentY, diameter, diameter) + if (direction == "horizontal") { + currentX += distance + } else if (direction == "vertical") { + currentY += distance + } + } + } +} +//Changes the textarea content to whichever text is currently selected for editing +var whichTextIndex = 0 +function changeWhichText() { + for (var i = 0; i < version.textList.length; i ++) { + if (version.textList[i][0] == document.getElementById("inputWhichText").value) { + whichTextIndex = i + } + } + document.getElementById("inputText").value = version.textList[whichTextIndex][1] +} +//Removes all the white pixels in an image +function whiteToTransparent(targetImage, source = targetImage.src) { + //Create image, size canvas, draw image + var imgTempTarget = new Image() + imgTempTarget.crossOrigin = "anonymous" + imgTempTarget.src = source + imgTempTarget.onload = function() { + if (imgTempTarget.width > 0 && imgTempTarget.height > 0) { + transparentCanvas.width = imgTempTarget.width + transparentCanvas.height = imgTempTarget.height + transparentContext.drawImage(imgTempTarget, 0, 0) + //declare variables + var width = transparentCanvas.width + var height = transparentCanvas.height + var imageData = transparentContext.getImageData(0, 0, transparentCanvas.width, transparentCanvas.height) + var x, y, index + //Go through every pixel and + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + index = (y * width + x) * 4 + if (imageData.data[index] >= 245 && imageData.data[index + 1] >= 245 && imageData.data[index + 2] >= 245) { + imageData.data[index + 3] = 0 + } + } + } + transparentContext.clearRect(0, 0, width, height) + transparentContext.putImageData(imageData, 0, 0) + targetImage.src = transparentCanvas.toDataURL() + autocrop(targetImage) + } + } +} +//Removes all the whitespace in an image +function autocrop(targetImage, source = targetImage.src) { + //Create image, size canvas, draw image + var imgTempTarget = new Image() + imgTempTarget.crossOrigin = "anonymous" + imgTempTarget.src = source + imgTempTarget.onload = function() { + if (imgTempTarget.width > 0 && imgTempTarget.height > 0) { + cropCanvas.width = imgTempTarget.width + cropCanvas.height = imgTempTarget.height + cropContext.drawImage(imgTempTarget, 0, 0) + //declare variables + var width = cropCanvas.width + var height = cropCanvas.height + var pix = {x:[], y:[]} + var imageData = cropContext.getImageData(0, 0, cropCanvas.width, cropCanvas.height) + var x, y, index + if (imageData.data.length > 4) { + //Go through every pixel and + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + //(y * width + x) * 4 + 3 calculates the index at which the alpha value of the pixel at x, y is given + index = (y * width + x) * 4 + 3 + if (imageData.data[index] > 0) { + //pix is the image object that stores two arrays of x and y coordinates. These stored coordinates are all the visible pixels + pix.x.push(x) + pix.y.push(y) + } + } + } + //sorts the arrays numerically + pix.x.sort(function(a,b){return a-b}) + pix.y.sort(function(a,b){return a-b}) + var n = pix.x.length - 1 + //Finds the difference between the leftmost and rightmost visible pixels, and the topmost and bottommost pixels, cuts out a section of the canvas + width = pix.x[n] - pix.x[0] + height = pix.y[n] - pix.y[0] + var cropped = cropContext.getImageData(pix.x[0], pix.y[0], width + 1, height + 1) + //Resizes the canvas and draws cropped image + cropCanvas.width = width + 1 + cropCanvas.height = height + 1 + cropContext.putImageData(cropped, 0, 0) + //Saves the newly cropped image to the given image + targetImage.src = cropCanvas.toDataURL() + } + } + } +} +//The next several functions are all about loading images! +function uploadImage(event, destination) { + var input = event.target + var reader = new FileReader() + reader.onload = function() { + var dataURL = reader.result + destination.src = dataURL + } + reader.readAsDataURL(input.files[0]) +} +var savedArtList = [], cardArtUrlList = [], cardArtArtistList = [] +function inputCardArtName(cardArtNameInput) { + var xhttp = new XMLHttpRequest() + xhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + savedArtList = this.responseText.split('"art_crop":"') + savedArtList.splice(0, 1) + document.getElementById("inputCardArtNameNumber").max = savedArtList.length + document.getElementById("inputCardArtNameNumber").value = 1 + for (i = 0; i < savedArtList.length; i ++) { + cardArtUrlList[i] = savedArtList[i].split('","border_crop":')[0] + } + for (i = 0; i < savedArtList.length; i ++) { + cardArtArtistList[i] = savedArtList[i].slice(savedArtList[i].indexOf('"artist":"') + 10, savedArtList[i].indexOf('","artist_ids":')) + } + inputCardArtNameNumber(1) + } else if (this.readyState == 4 && this.status == 404) { + alert("Sorry, but we can't seem to find any art for '" + cardArtNameInput + "'") + } + } + xhttp.open("GET", "https://api.scryfall.com/cards/search?order=released&unique=art&q=name%3D" + cardArtNameInput.replace(/ /g, "_"), true) + xhttp.send() +} +function inputCardArtNameNumber(cardArtNameNumberInput) { + cardArt.src = cardArtUrlList[cardArtNameNumberInput - 1] + document.getElementById("inputInfoArtist").value = cardArtArtistList[cardArtNameNumberInput - 1] + updateBottomInfoCanvas() +} +//Downloads the image! +function downloadCardImage(linkElement) { + if (document.getElementById("inputInfoArtist").value.replace(/ /g, "") != "") { + linkElement.download = version.textList[0][1].toLowerCase().replace(/ /g, "_") + ".png" + if (linkElement.download == ".png") { + linkElement.download = "card.png" + } + } else { + event.preventDefault() + alert("You must properly credit an artist before downloading") + } + var cardImageData = cardCanvas.toDataURL() + if (cardImageData == undefined) { + alert("Sorry, it seems that you cannot download your card. Please try using a different browser/device.") + } + linkElement.href = cardImageData +} +//Toggles the visibility of tooltips +function toggleTooltips(revealed = true) { + var tooltipList = document.getElementsByClassName("tooltiptext") + for (var i = 0; i < tooltipList.length; i ++) { + if (revealed) { + tooltipList[i].classList.remove("hidden") + } else { + tooltipList[i].classList.add("hidden") + } + } + setCookie("tooltipsToggled", revealed + "") +} + + + + + +//DELETE: (for testing purposes only) +function testFunction() { + loadScript("data/scripts/setCodeList.js") +} + + + +function setCookie(cookieName, cookieValue, cookieTime = (5 * 365 * 24 * 60 * 60 * 1000)) { //years*days*hours*minutes*seconds*milliseconds + var tempDate = new Date(); + tempDate.setTime(tempDate.getTime() + cookieTime); + var expires = "expires=" + tempDate.toUTCString(); + document.cookie = cookieName + "=" + cookieValue + ";" + expires + ";path=/"; +} +function getCookie(cookieName) { + var name = cookieName + "="; + var cookieArray = document.cookie.split(";"); + for(var i = 0; i < cookieArray.length; i++) { + var tempCookie = cookieArray[i]; + while (tempCookie.charAt(0) == " ") { + tempCookie = tempCookie.substring(1); + } + if (tempCookie.indexOf(name) == 0) { + return tempCookie.substring(name.length, tempCookie.length); + } + } + return ""; +} +function checkCookies() { + if (getCookie("tooltipsToggled") == "false") { + toggleTooltips(false) + document.getElementById("tooltipToggler").checked = false + } +} \ No newline at end of file diff --git a/new/data/site/styles.css b/new/data/site/styles.css new file mode 100644 index 00000000..fd607c6a --- /dev/null +++ b/new/data/site/styles.css @@ -0,0 +1,212 @@ +/*fonts*/ +@font-face { + font-family: gothammedium; + src: url("../fonts/gotham-medium.ttf"); +} +@font-face { + font-family: belerenb; + src: url("../fonts/beleren-b.ttf"); +} +@font-face { + font-family: belerenbsc; + src: url("../fonts/beleren-bsc.ttf"); +} +@font-face { + font-family: matrix; + src: url("../fonts/matrix.ttf"); +} +@font-face { + font-family: matrixb; + src: url("../fonts/matrix-b.ttf"); +} +@font-face { + font-family: matrixbsc; + src: url("../fonts/matrix-bsc.ttf"); +} +@font-face { + font-family: mplantin; + src: url("../fonts/mplantin.ttf"); +} +@font-face { + font-family: mplantini; + src: url("../fonts/mplantin-i.ttf"); +} +@font-face { + font-family: goudymedieval; + src: url("../fonts/goudy-medieval.ttf"); +} +:root { + --shifting-color-1: rgb(128, 237, 18); + --shifting-color-1-light: rgb(255, 255, 168); + --light-color: #eee; + --dark-color: #333; +} +footer { + background-color: var(--dark-color); + padding: 25pt; + font: 13pt gothammedium; + color: var(--light-color); +} +body { + margin: 0px; + background-image: url(images/lowpoly.png); + background-attachment: fixed; + background-size: cover; +} +html { + background-image: linear-gradient(to bottom right, var(--shifting-color-1), var(--shifting-color-1-light)); + background-attachment: fixed; + overflow-x: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +canvas { + width: calc(100% - 10pt); + height: auto; +} +.canvasContainer { + text-align: center; +} +.mainGrid { + padding: 5pt; + display: grid; + grid-gap: 25pt; + grid-template-columns: auto; + font: 16pt mplantin; +} +.imageGrid { + display: grid; + grid-template-columns: auto 143pt; + min-height: 200pt; +} +.layer { + padding: 50pt; + color: black; + font: 24pt belerenbsc; + text-align: center; +} +.layer:nth-child(even) { + background-color: var(--light-color); + background-image: url(images/layerBackground.png); + background-position: center; + background-repeat: no-repeat; +} +.imgPreview { + max-width: 143pt; + max-height: 200pt; +} +.cardMenu > div { + /*border: 1px solid red;*/ + /*margin-bottom: 5pt;*/ +} +.bar { + background-image: url(../images/manaSymbols/63.png); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 2px; + width: 100%; + height: 20pt; +} +.cardMenu > div > div:nth-child(1) { + /*border: 1px solid blue;*/ + text-align: center; + font: 24pt belerenbsc; +} +.twoGrid { + display: grid; + grid-template-columns: 50% auto; +} +.input, .textarea, .button, .select { + font: 1em mplantin; + background-color: var(--light-color); + border: 1px solid #aaae; + border-radius: 0.2em; + padding: 0px 0.2em; + outline: none; +} +.textarea { + width: 100%; + min-height: 6em; + max-height: 18em; + resize: vertical; +} +.select { + background: #fafafa url(../images/manaSymbols/49.png) no-repeat calc(100% - 0.1em) 50%; + background-size: 1em 1em; + -webkit-appearance: none; +} +.autoGrid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(6em, 1fr)); + grid-auto-rows: min-content; +} +.input.file { + padding: 0px; +} +@media screen and (min-width: 994pt) { + .mainGrid { + padding: 25pt; + grid-template-columns: calc(750px + 2px) auto; + } +} +@media screen and (min-width: calc(750px + 30pt)) { + canvas { + width: 750px; + height: 1050px; + } +} +.tooltip { + position: relative; +} +.tooltip .tooltiptext { + visibility: hidden; + background-color: var(--dark-color); + color: var(--light-color); + text-align: center; + border-radius: 5px; + padding: 5px; + top: calc(100% + 5px); + left: 0px; + max-width: calc(100% - 10px); + width: auto; + position: absolute; + z-index: 1; + opacity: 0; + transition: opacity 0.5s; +} +.tooltip .tooltiptext::after { + content: " "; + position: absolute; + bottom: 100%; + left: 50%; + margin-left: -5px; + border-width: 5px; + border-style: solid; + border-color: transparent transparent var(--dark-color) transparent; +} +.tooltip:hover .tooltiptext { + visibility: visible; + opacity: 1; +} +.tooltip .tooltiptext:hover { + /*visibility: hidden;*/ + opacity: 0; +} +div.tooltip > * { + width: 100%; +} +a { + color: black; +} +a:hover { + color: var(--dark-color); +} +.hidden { + display: none; +} +.footerGrid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(0px, 1fr)); +} \ No newline at end of file diff --git a/new/data/versions/m15Version.js b/new/data/versions/m15Version.js new file mode 100644 index 00000000..88e931de --- /dev/null +++ b/new/data/versions/m15Version.js @@ -0,0 +1,41 @@ +//============================================// +// Card Conjurer, by Kyle Burton // +//============================================// +version.currentVersion = "m15" +version.typeOrder = ["Full", "FullSecondary", "Frame", "FrameSecondary", "Pinline", "PinlineSecondary", "Legendary", "LegendarySecondary", "Title", "TitleSecondary", "Type", "TypeSecondary", "Rules", "RulesSecondary", "PT", "RareStamp", "RareStampSecondary"] +version.typeNotFull = ["Legendary", "LegendarySecondary", "PT", "RareStamp", "RareStampSecondary"] +version.artX = cwidth(58) +version.artY = cheight(118) +version.setSymbolRight = cwidth(693) +version.setSymbolVertical = cheight(620) +version.setSymbolWidth = cwidth(77) +version.setSymbolHeight = cheight(42) +version.bottomInfoFunction = "m15BottomInfo" +version.manaCostX = cwidth(656) +version.manaCostY = cheight(62) +version.manaCostDiameter = cwidth(36) +version.manaCostDistance = cwidth(-38) +version.manaCostDirection = "horizontal" +version.rareStampX = cwidth(340) +version.rareStampY = cheight(965) +version.rareStampWidth = cwidth(70) +version.rareStampHeight = cheight(38) +//Name, text, x, y, width, height, font, size, color, other +version.textList = [ + ["Title", "", cwidth(62), cheight(87), cwidth(630), 0, "belerenb", 40, "black", "oneLine=true"], + ["Type", "", cwidth(60), cheight(624), cwidth(630), 0, "belerenb", 34, "black", "oneLine=true"], + ["Rules Text", "", cwidth(63), cheight(670), cwidth(624), cheight(292), "mplantin", 38, "black", "lineSpace=0.97"], + ["Power Toughness", "", cwidth(590), cheight(970), cwidth(110), 0, "belerenb", 39, "black", "oneLine=true,textAlign='center'"] +] +finishChangingVersion() + +function m15BottomInfo() { + //remember to ctrl+f for 'artistBrushWidth' and adjust that when fixing these values! + bottomInfoContext.clearRect(0, 0, cardWidth, cardHeight) + bottomInfoContext.writeText(document.getElementById("inputInfoNumber").value + " " + document.getElementById("inputInfoRarity").value + " *Not For Sale*", cwidth(46), cheight(993), cwidth(329), 0, "gothammedium", 18, "white", "oneLine=true") + bottomInfoContext.writeText(document.getElementById("inputInfoSet").value + " \u00b7 " + document.getElementById("inputInfoLanguage").value + " {fontsize1}{font:belerenbsc}{artistBrush}" + document.getElementById("inputInfoArtist").value, cwidth(46), cheight(1012), cwidth(375), 0, "gothammedium", 17, "white", "oneLine=true") + var copyrightShift = 19 * cardMasterTypes.includes("PT") + bottomInfoContext.writeText("\u2122 & \u00a9 " + date.getFullYear() + " Wizards of the Coast", cardWidth / 2, cheight(993 + copyrightShift), cwidth(322), 0, "mplantin", 17, "white", "oneLine=true,textAlign='right'") + updateCardCanvas() +} +setTimeout(m15BottomInfo, 250) \ No newline at end of file diff --git a/new/index.html b/new/index.html new file mode 100644 index 00000000..822bfa14 --- /dev/null +++ b/new/index.html @@ -0,0 +1,120 @@ + + + + Card Conjurer + + + + + + +
+
+
+ +
+
+
+
+ Card Frame +
+
+
+
Select the part of the card frame
+
Select the color of the current image type
+ + +
+
+
Preview of the selected image
+
+
+
+
+
+
+ Text +
+
Select the text you want to edit
+
Edit the selected text
+
Enter the mana cost. Include spaces!
+
+
+
+
+ Art +
+
+
+
Upload an image for the card art
+
Enter a URL for the card art
+
Enter a card name to use its art
+
Select which art to use (from the entered card name)
+
+
+
Placement & Zoom:
+
Shift art to the right
+
Shift art down
+
Art zoom level
+
+
+
+
+
+
+ Collector's/Legal Information +
+
+
Card Number
+
Rarity
+
Set Code
+
Language
+
Artist's Name
(necessary)
+
+
+
+
+
+ Set Symbol +
+
Upload an image for the set symbol
+
Enter a URL for the set symbol
+
Use a set code
(2-3 letters, as seen on the bottom of cards)
+
C, U, R, M, or S
(Not every set has every rarity)
+
Use a random set symbol and rarity
+
+
+
+
+ Download +
+
+
+
+
+ This is a layer! +
+
+ This is another layer! +
+
+ This is yet another layer! +
+
+ + + + + + \ No newline at end of file