新增色号系统选择功能,优化调色板和网格工具提示的显示逻辑,确保在不同色号系统下正确显示颜色键。同时,重构相关组件以支持新功能,提升用户体验和代码可读性。
This commit is contained in:
293
src/app/colorSystemMapping.json
Normal file
293
src/app/colorSystemMapping.json
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
{
|
||||||
|
"#FAF4C8": { "MARD": "A01", "COCO": "E02", "漫漫": "E2", "盼盼": "65", "咪小窝": "77" },
|
||||||
|
"#FFFFD5": { "MARD": "A02", "COCO": "E01", "漫漫": "B1", "盼盼": "2", "咪小窝": "2" },
|
||||||
|
"#FEFF8B": { "MARD": "A03", "COCO": "E05", "漫漫": "B2", "盼盼": "28", "咪小窝": "28" },
|
||||||
|
"#FBED56": { "MARD": "A04", "COCO": "E07", "漫漫": "B3", "盼盼": "3", "咪小窝": "3" },
|
||||||
|
"#F4D738": { "MARD": "A05", "COCO": "D03", "漫漫": "B4", "盼盼": "74", "咪小窝": "79" },
|
||||||
|
"#FEAC4C": { "MARD": "A06", "COCO": "D05", "漫漫": "B5", "盼盼": "29", "咪小窝": "29" },
|
||||||
|
"#FE8B4C": { "MARD": "A07", "COCO": "D08", "漫漫": "B6", "盼盼": "4", "咪小窝": "4" },
|
||||||
|
"#FFDA45": { "MARD": "A08", "COCO": "E08", "漫漫": "B10", "盼盼": "88", "咪小窝": "98" },
|
||||||
|
"#FF995B": { "MARD": "A09", "COCO": "D06", "漫漫": "B11", "盼盼": "90", "咪小窝": "97" },
|
||||||
|
"#F77C31": { "MARD": "A10", "COCO": "D07", "漫漫": "B12", "盼盼": "89", "咪小窝": "96" },
|
||||||
|
"#FFDD99": { "MARD": "A11", "COCO": "D01", "漫漫": "E11", "盼盼": "100", "咪小窝": "109" },
|
||||||
|
"#FE9F72": { "MARD": "A12", "COCO": "K09", "漫漫": "A18", "盼盼": "99", "咪小窝": "110" },
|
||||||
|
"#FFC365": { "MARD": "A13", "COCO": "D04", "漫漫": "B13", "盼盼": "131", "咪小窝": "116" },
|
||||||
|
"#FD543D": { "MARD": "A14", "COCO": "C05", "漫漫": "B14", "盼盼": "138", "咪小窝": "135" },
|
||||||
|
"#FFF365": { "MARD": "A15", "COCO": "E04", "漫漫": "B15", "盼盼": "150", "咪小窝": "150" },
|
||||||
|
"#FFFF9F": { "MARD": "A16", "COCO": "E03", "漫漫": "IC04", "盼盼": "216", "咪小窝": "216" },
|
||||||
|
"#FFE36E": { "MARD": "A17", "COCO": "E06", "漫漫": "IC9", "盼盼": "213", "咪小窝": "213" },
|
||||||
|
"#FEBE7D": { "MARD": "A18", "COCO": "D02", "漫漫": "IC14", "盼盼": "223", "咪小窝": "208" },
|
||||||
|
"#FD7C72": { "MARD": "A19", "COCO": "K10", "漫漫": "IC15", "盼盼": "218", "咪小窝": "218" },
|
||||||
|
"#FFD568": { "MARD": "A20", "COCO": "E09", "漫漫": "Q6", "盼盼": "242", "咪小窝": "242" },
|
||||||
|
"#FFE395": { "MARD": "A21", "COCO": "E10", "漫漫": "R07", "盼盼": "276", "咪小窝": "261" },
|
||||||
|
"#F4F57D": { "MARD": "A22", "COCO": "E11", "漫漫": "R06", "盼盼": "270", "咪小窝": "255" },
|
||||||
|
"#E6C9B7": { "MARD": "A23", "COCO": "E12", "漫漫": "R08", "盼盼": "274", "咪小窝": "259" },
|
||||||
|
"#F7F8A2": { "MARD": "A24", "COCO": "E13", "漫漫": "G3", "盼盼": "288", "咪小窝": "273" },
|
||||||
|
"#FFD67D": { "MARD": "A25", "COCO": "E14", "漫漫": "G4", "盼盼": "289", "咪小窝": "274" },
|
||||||
|
"#FFC830": { "MARD": "A26", "COCO": "E15", "漫漫": "G5", "盼盼": "290", "咪小窝": "275" },
|
||||||
|
"#E6EE31": { "MARD": "B01", "COCO": "F05", "漫漫": "C1", "盼盼": "48", "咪小窝": "48" },
|
||||||
|
"#63F347": { "MARD": "B02", "COCO": "F08", "漫漫": "C2", "盼盼": "33", "咪小窝": "33" },
|
||||||
|
"#9EF780": { "MARD": "B03", "COCO": "F04", "漫漫": "C7", "盼盼": "26", "咪小窝": "26" },
|
||||||
|
"#5DE035": { "MARD": "B04", "COCO": "F09", "漫漫": "C3", "盼盼": "66", "咪小窝": "78" },
|
||||||
|
"#35E352": { "MARD": "B05", "COCO": "F10", "漫漫": "C4", "盼盼": "39", "咪小窝": "39" },
|
||||||
|
"#65E2A6": { "MARD": "B06", "COCO": "G04", "漫漫": "C9", "盼盼": "11", "咪小窝": "11" },
|
||||||
|
"#3DAF80": { "MARD": "B07", "COCO": "G05", "漫漫": "C10", "盼盼": "44", "咪小窝": "44" },
|
||||||
|
"#1C9C4F": { "MARD": "B08", "COCO": "F11", "漫漫": "C5", "盼盼": "10", "咪小窝": "10" },
|
||||||
|
"#27523A": { "MARD": "B09", "COCO": "F16", "漫漫": "C6", "盼盼": "79", "咪小窝": "84" },
|
||||||
|
"#95D3C2": { "MARD": "B10", "COCO": "G03", "漫漫": "C11", "盼盼": "96", "咪小窝": "100" },
|
||||||
|
"#5D722A": { "MARD": "B11", "COCO": "F14", "漫漫": "C12", "盼盼": "97", "咪小窝": "99" },
|
||||||
|
"#166F41": { "MARD": "B12", "COCO": "F12", "漫漫": "C13", "盼盼": "106", "咪小窝": "111" },
|
||||||
|
"#CAEB7B": { "MARD": "B13", "COCO": "F02", "漫漫": "C14", "盼盼": "128", "咪小窝": "119" },
|
||||||
|
"#ADE946": { "MARD": "B14", "COCO": "F06", "漫漫": "C15", "盼盼": "129", "咪小窝": "117" },
|
||||||
|
"#2E5132": { "MARD": "B15", "COCO": "F15", "漫漫": "C16", "盼盼": "130", "咪小窝": "122" },
|
||||||
|
"#C5ED9C": { "MARD": "B16", "COCO": "F03", "漫漫": "C17", "盼盼": "141", "咪小窝": "133" },
|
||||||
|
"#9BB13A": { "MARD": "B17", "COCO": "F13", "漫漫": "C18", "盼盼": "142", "咪小窝": "141" },
|
||||||
|
"#E6EE49": { "MARD": "B18", "COCO": "F07", "漫漫": "C19", "盼盼": "147", "咪小窝": "147" },
|
||||||
|
"#24B88C": { "MARD": "B19", "COCO": "G06", "漫漫": "DH15", "盼盼": "191", "咪小窝": "174" },
|
||||||
|
"#C2F0CC": { "MARD": "B20", "COCO": "G02", "漫漫": "DH10", "盼盼": "192", "咪小窝": "175" },
|
||||||
|
"#156A6B": { "MARD": "B21", "COCO": "G07", "漫漫": "DH2", "盼盼": "207", "咪小窝": "194" },
|
||||||
|
"#0B3C43": { "MARD": "B22", "COCO": "G08", "漫漫": "DH7", "盼盼": "206", "咪小窝": "193" },
|
||||||
|
"#303A21": { "MARD": "B23", "COCO": "F17", "漫漫": "DH12", "盼盼": "205", "咪小窝": "192" },
|
||||||
|
"#EEFCA5": { "MARD": "B24", "COCO": "F01", "漫漫": "IC5", "盼盼": "222", "咪小窝": "207" },
|
||||||
|
"#4E846D": { "MARD": "B25", "COCO": "F18", "漫漫": "Q13", "盼盼": "240", "咪小窝": "240" },
|
||||||
|
"#8D7A35": { "MARD": "B26", "COCO": "F19", "漫漫": "Q7", "盼盼": "248", "咪小窝": "248" },
|
||||||
|
"#CCE1AF": { "MARD": "B27", "COCO": "F20", "漫漫": "R10", "盼盼": "262", "咪小窝": "262" },
|
||||||
|
"#9EE5B9": { "MARD": "B28", "COCO": "F21", "漫漫": "R11", "盼盼": "269", "咪小窝": "254" },
|
||||||
|
"#C5E254": { "MARD": "B29", "COCO": "F22", "漫漫": "R09", "盼盼": "268", "咪小窝": "253" },
|
||||||
|
"#E2FCB1": { "MARD": "B30", "COCO": "F23", "漫漫": "G6", "盼盼": "285", "咪小窝": "270" },
|
||||||
|
"#B0E792": { "MARD": "B31", "COCO": "F24", "漫漫": "G7", "盼盼": "286", "咪小窝": "271" },
|
||||||
|
"#9CAB5A": { "MARD": "B32", "COCO": "F25", "漫漫": "G12", "盼盼": "287", "咪小窝": "272" },
|
||||||
|
"#E8FFE7": { "MARD": "C01", "COCO": "G01", "漫漫": "C8", "盼盼": "64", "咪小窝": "76" },
|
||||||
|
"#A9F9FC": { "MARD": "C02", "COCO": "H03", "漫漫": "D1", "盼盼": "30", "咪小窝": "30" },
|
||||||
|
"#A0E2FB": { "MARD": "C03", "COCO": "H04", "漫漫": "D2", "盼盼": "63", "咪小窝": "75" },
|
||||||
|
"#41CCFF": { "MARD": "C04", "COCO": "H05", "漫漫": "D3", "盼盼": "77", "咪小窝": "82" },
|
||||||
|
"#01ACEB": { "MARD": "C05", "COCO": "H07", "漫漫": "D7", "盼盼": "34", "咪小窝": "34" },
|
||||||
|
"#50AAF0": { "MARD": "C06", "COCO": "H08", "漫漫": "D4", "盼盼": "25", "咪小窝": "25" },
|
||||||
|
"#3677D2": { "MARD": "C07", "COCO": "H13", "漫漫": "D8", "盼盼": "9", "咪小窝": "9" },
|
||||||
|
"#0F54C0": { "MARD": "C08", "COCO": "H14", "漫漫": "D9", "盼盼": "52", "咪小窝": "71" },
|
||||||
|
"#324BCA": { "MARD": "C09", "COCO": "H16", "漫漫": "N5", "盼盼": "42", "咪小窝": "42" },
|
||||||
|
"#3EBCE2": { "MARD": "C10", "COCO": "H09", "漫漫": "D25", "盼盼": "121", "咪小窝": "130" },
|
||||||
|
"#28DDDE": { "MARD": "C11", "COCO": "H10", "漫漫": "D28", "盼盼": "122", "咪小窝": "113" },
|
||||||
|
"#1C334D": { "MARD": "C12", "COCO": "H23", "漫漫": "D26", "盼盼": "120", "咪小窝": "120" },
|
||||||
|
"#CDE8FF": { "MARD": "C13", "COCO": "H01", "漫漫": "D30", "盼盼": "140", "咪小窝": "142" },
|
||||||
|
"#D5FDFF": { "MARD": "C14", "COCO": "H02", "漫漫": "D29", "盼盼": "139", "咪小窝": "136" },
|
||||||
|
"#22C4C6": { "MARD": "C15", "COCO": "H11", "漫漫": "D31", "盼盼": "143", "咪小窝": "132" },
|
||||||
|
"#1557A8": { "MARD": "C16", "COCO": "H18", "漫漫": "D32", "盼盼": "149", "咪小窝": "149" },
|
||||||
|
"#04D1F6": { "MARD": "C17", "COCO": "H19", "漫漫": "D36", "盼盼": "163", "咪小窝": "156" },
|
||||||
|
"#1D3344": { "MARD": "C18", "COCO": "H24", "漫漫": "DH6", "盼盼": "196", "咪小窝": "196" },
|
||||||
|
"#1887A2": { "MARD": "C19", "COCO": "H12", "漫漫": "DH9", "盼盼": "202", "咪小窝": "202" },
|
||||||
|
"#176DAF": { "MARD": "C20", "COCO": "H17", "漫漫": "DH14", "盼盼": "197", "咪小窝": "197" },
|
||||||
|
"#BEDDFF": { "MARD": "C21", "COCO": "H06", "漫漫": "IC3", "盼盼": "212", "咪小窝": "212" },
|
||||||
|
"#67B4BE": { "MARD": "C22", "COCO": "H25", "漫漫": "Q11", "盼盼": "239", "咪小窝": "239" },
|
||||||
|
"#C8E2FF": { "MARD": "C23", "COCO": "H26", "漫漫": "R13", "盼盼": "263", "咪小窝": "263" },
|
||||||
|
"#7CC4FF": { "MARD": "C24", "COCO": "H27", "漫漫": "R14", "盼盼": "267", "咪小窝": "252" },
|
||||||
|
"#A9E5E5": { "MARD": "C25", "COCO": "H28", "漫漫": "R12", "盼盼": "271", "咪小窝": "256" },
|
||||||
|
"#3CAED8": { "MARD": "C26", "COCO": "H29", "漫漫": "R15", "盼盼": "265", "咪小窝": "250" },
|
||||||
|
"#D3DFFA": { "MARD": "C27", "COCO": "H30", "漫漫": "G13", "盼盼": "279", "咪小窝": "264" },
|
||||||
|
"#BBCFED": { "MARD": "C28", "COCO": "H31", "漫漫": "G14", "盼盼": "280", "咪小窝": "265" },
|
||||||
|
"#34488E": { "MARD": "C29", "COCO": "H32", "漫漫": "G15", "盼盼": "281", "咪小窝": "266" },
|
||||||
|
"#AEB4F2": { "MARD": "D01", "COCO": "J07", "漫漫": "D5", "盼盼": "46", "咪小窝": "46" },
|
||||||
|
"#858EDD": { "MARD": "D02", "COCO": "J08", "漫漫": "D6", "盼盼": "36", "咪小窝": "36" },
|
||||||
|
"#2F54AF": { "MARD": "D03", "COCO": "H15", "漫漫": "D10", "盼盼": "8", "咪小窝": "8" },
|
||||||
|
"#182A84": { "MARD": "D04", "COCO": "H20", "漫漫": "D11", "盼盼": "75", "咪小窝": "80" },
|
||||||
|
"#B843C5": { "MARD": "D05", "COCO": "J12", "漫漫": "D13", "盼盼": "32", "咪小窝": "32" },
|
||||||
|
"#AC7BDE": { "MARD": "D06", "COCO": "J11", "漫漫": "D14", "盼盼": "27", "咪小窝": "27" },
|
||||||
|
"#8854B3": { "MARD": "D07", "COCO": "J15", "漫漫": "D12", "盼盼": "7", "咪小窝": "7" },
|
||||||
|
"#E2D3FF": { "MARD": "D08", "COCO": "J03", "漫漫": "D16", "盼盼": "94", "咪小窝": "89" },
|
||||||
|
"#D5B9F8": { "MARD": "D09", "COCO": "J04", "漫漫": "D17", "盼盼": "93", "咪小窝": "90" },
|
||||||
|
"#361851": { "MARD": "D10", "COCO": "J19", "漫漫": "D15", "盼盼": "92", "咪小窝": "91" },
|
||||||
|
"#B9BAE1": { "MARD": "D11", "COCO": "J06", "漫漫": "D19", "盼盼": "105", "咪小窝": "104" },
|
||||||
|
"#DE9AD4": { "MARD": "D12", "COCO": "J10", "漫漫": "D20", "盼盼": "104", "咪小窝": "105" },
|
||||||
|
"#B90095": { "MARD": "D13", "COCO": "J14", "漫漫": "D21", "盼盼": "103", "咪小窝": "106" },
|
||||||
|
"#8B279B": { "MARD": "D14", "COCO": "J16", "漫漫": "D22", "盼盼": "102", "咪小窝": "107" },
|
||||||
|
"#2F1F90": { "MARD": "D15", "COCO": "H22", "漫漫": "D18", "盼盼": "101", "咪小窝": "108" },
|
||||||
|
"#E3E1EE": { "MARD": "D16", "COCO": "J01", "漫漫": "D23", "盼盼": "118", "咪小窝": "126" },
|
||||||
|
"#C4D4F6": { "MARD": "D17", "COCO": "J05", "漫漫": "D24", "盼盼": "119", "咪小窝": "128" },
|
||||||
|
"#A45EC7": { "MARD": "D18", "COCO": "J13", "漫漫": "D27", "盼盼": "124", "咪小窝": "125" },
|
||||||
|
"#D8C3D7": { "MARD": "D19", "COCO": "J09", "漫漫": "D33", "盼盼": "153", "咪小窝": "153" },
|
||||||
|
"#9C32B2": { "MARD": "D20", "COCO": "J17", "漫漫": "D34", "盼盼": "161", "咪小窝": "155" },
|
||||||
|
"#9A009B": { "MARD": "D21", "COCO": "J18", "漫漫": "D35", "盼盼": "162", "咪小窝": "158" },
|
||||||
|
"#333A95": { "MARD": "D22", "COCO": "H21", "漫漫": "DH1", "盼盼": "198", "咪小窝": "198" },
|
||||||
|
"#EBDAFC": { "MARD": "D23", "COCO": "J02", "漫漫": "IC8", "盼盼": "217", "咪小窝": "217" },
|
||||||
|
"#7786E5": { "MARD": "D24", "COCO": "J20", "漫漫": "Q14", "盼盼": "244", "咪小窝": "244" },
|
||||||
|
"#494FC7": { "MARD": "D25", "COCO": "J21", "漫漫": "Q15", "盼盼": "249", "咪小窝": "234" },
|
||||||
|
"#DFC2F8": { "MARD": "D26", "COCO": "J22", "漫漫": "R01", "盼盼": "273", "咪小窝": "258" },
|
||||||
|
"#FDD3CC": { "MARD": "E01", "COCO": "K03", "漫漫": "E1", "盼盼": "18", "咪小窝": "18" },
|
||||||
|
"#FEC0DF": { "MARD": "E02", "COCO": "K15", "漫漫": "A7", "盼盼": "38", "咪小窝": "38" },
|
||||||
|
"#FFB7E7": { "MARD": "E03", "COCO": "K17", "漫漫": "A8", "盼盼": "62", "咪小窝": "74" },
|
||||||
|
"#E8649E": { "MARD": "E04", "COCO": "K21", "漫漫": "A9", "盼盼": "6", "咪小窝": "6" },
|
||||||
|
"#F551A2": { "MARD": "E05", "COCO": "K19", "漫漫": "A10", "盼盼": "40", "咪小窝": "40" },
|
||||||
|
"#F13D74": { "MARD": "E06", "COCO": "K22", "漫漫": "A11", "盼盼": "20", "咪小窝": "20" },
|
||||||
|
"#C63478": { "MARD": "E07", "COCO": "K25", "漫漫": "A12", "盼盼": "41", "咪小窝": "41" },
|
||||||
|
"#FFDBE9": { "MARD": "E08", "COCO": "K12", "漫漫": "A13", "盼盼": "84", "咪小窝": "103" },
|
||||||
|
"#E970CC": { "MARD": "E09", "COCO": "K18", "漫漫": "A14", "盼盼": "98", "咪小窝": "95" },
|
||||||
|
"#D33793": { "MARD": "E10", "COCO": "K23", "漫漫": "A16", "盼盼": "83", "咪小窝": "94" },
|
||||||
|
"#FCDDD2": { "MARD": "E11", "COCO": "K02", "漫漫": "A19", "盼盼": "125", "咪小窝": "131" },
|
||||||
|
"#F78FC3": { "MARD": "E12", "COCO": "K16", "漫漫": "A20", "盼盼": "126", "咪小窝": "112" },
|
||||||
|
"#B5006D": { "MARD": "E13", "COCO": "K24", "漫漫": "A21", "盼盼": "127", "咪小窝": "124" },
|
||||||
|
"#FFD1BA": { "MARD": "E14", "COCO": "K05", "漫漫": "E21", "盼盼": "137", "咪小窝": "140" },
|
||||||
|
"#F8C7C9": { "MARD": "E15", "COCO": "K04", "漫漫": "A23", "盼盼": "135", "咪小窝": "139" },
|
||||||
|
"#FFF3EB": { "MARD": "E16", "COCO": "K01", "漫漫": "IC2", "盼盼": "221", "咪小窝": "206" },
|
||||||
|
"#FFE2EA": { "MARD": "E17", "COCO": "K11", "漫漫": "IC7", "盼盼": "220", "咪小窝": "205" },
|
||||||
|
"#FFC7DB": { "MARD": "E18", "COCO": "K13", "漫漫": "IC13", "盼盼": "210", "咪小窝": "210" },
|
||||||
|
"#FEBAD5": { "MARD": "E19", "COCO": "K14", "漫漫": "IC12", "盼盼": "215", "咪小窝": "215" },
|
||||||
|
"#D8C7D1": { "MARD": "E20", "COCO": "K26", "漫漫": "Q1", "盼盼": "241", "咪小窝": "241" },
|
||||||
|
"#BD9DA1": { "MARD": "E21", "COCO": "K27", "漫漫": "Q2", "盼盼": "253", "咪小窝": "238" },
|
||||||
|
"#B785A1": { "MARD": "E22", "COCO": "K28", "漫漫": "Q4", "盼盼": "252", "咪小窝": "237" },
|
||||||
|
"#937A8D": { "MARD": "E23", "COCO": "K29", "漫漫": "Q3", "盼盼": "250", "咪小窝": "235" },
|
||||||
|
"#E1BCE8": { "MARD": "E24", "COCO": "K30", "漫漫": "G8", "盼盼": "282", "咪小窝": "267" },
|
||||||
|
"#FD957B": { "MARD": "F01", "COCO": "K08", "漫漫": "A1", "盼盼": "35", "咪小窝": "35" },
|
||||||
|
"#FC3D46": { "MARD": "F02", "COCO": "C02", "漫漫": "A2", "盼盼": "31", "咪小窝": "31" },
|
||||||
|
"#F74941": { "MARD": "F03", "COCO": "C03", "漫漫": "A3", "盼盼": "53", "咪小窝": "72" },
|
||||||
|
"#FC283C": { "MARD": "F04", "COCO": "C06", "漫漫": "A4", "盼盼": "54", "咪小窝": "73" },
|
||||||
|
"#E7002F": { "MARD": "F05", "COCO": "C07", "漫漫": "A5", "盼盼": "5", "咪小窝": "5" },
|
||||||
|
"#943630": { "MARD": "F06", "COCO": "Z21", "漫漫": "E9", "盼盼": "16", "咪小窝": "16" },
|
||||||
|
"#971937": { "MARD": "F07", "COCO": "C10", "漫漫": "A6", "盼盼": "47", "咪小窝": "47" },
|
||||||
|
"#BC0028": { "MARD": "F08", "COCO": "C09", "漫漫": "A17", "盼盼": "81", "咪小窝": "92" },
|
||||||
|
"#E2677A": { "MARD": "F09", "COCO": "K20", "漫漫": "A15", "盼盼": "82", "咪小窝": "93" },
|
||||||
|
"#8A4526": { "MARD": "F10", "COCO": "Z20", "漫漫": "E15", "盼盼": "116", "咪小窝": "115" },
|
||||||
|
"#5A2121": { "MARD": "F11", "COCO": "Z23", "漫漫": "E16", "盼盼": "117", "咪小窝": "129" },
|
||||||
|
"#FD4E6A": { "MARD": "F12", "COCO": "C01", "漫漫": "A22", "盼盼": "136", "咪小窝": "134" },
|
||||||
|
"#F35744": { "MARD": "F13", "COCO": "C04", "漫漫": "A24", "盼盼": "148", "咪小窝": "148" },
|
||||||
|
"#FFA9AD": { "MARD": "F14", "COCO": "K07", "漫漫": "A25", "盼盼": "154", "咪小窝": "154" },
|
||||||
|
"#D30022": { "MARD": "F15", "COCO": "C08", "漫漫": "DH8", "盼盼": "204", "咪小窝": "191" },
|
||||||
|
"#FEC2A6": { "MARD": "F16", "COCO": "K06", "漫漫": "IC10", "盼盼": "211", "咪小窝": "211" },
|
||||||
|
"#E69C79": { "MARD": "F17", "COCO": "K31", "漫漫": "Q9", "盼盼": "245", "咪小窝": "245" },
|
||||||
|
"#D37C46": { "MARD": "F18", "COCO": "K32", "漫漫": "Q10", "盼盼": "246", "咪小窝": "246" },
|
||||||
|
"#C1444A": { "MARD": "F19", "COCO": "K33", "漫漫": "Q05", "盼盼": "243", "咪小窝": "243" },
|
||||||
|
"#CD9391": { "MARD": "F20", "COCO": "K34", "漫漫": "R04", "盼盼": "275", "咪小窝": "260" },
|
||||||
|
"#F7B4C6": { "MARD": "F21", "COCO": "K35", "漫漫": "R03", "盼盼": "266", "咪小窝": "251" },
|
||||||
|
"#FDC0D0": { "MARD": "F22", "COCO": "K36", "漫漫": "R02", "盼盼": "272", "咪小窝": "257" },
|
||||||
|
"#F67E66": { "MARD": "F23", "COCO": "K37", "漫漫": "R05", "盼盼": "264", "咪小窝": "249" },
|
||||||
|
"#E698AA": { "MARD": "F24", "COCO": "K38", "漫漫": "G9", "盼盼": "283", "咪小窝": "268" },
|
||||||
|
"#E54B4F": { "MARD": "F25", "COCO": "K39", "漫漫": "G10", "盼盼": "284", "咪小窝": "269" },
|
||||||
|
"#FFE2CE": { "MARD": "G01", "COCO": "Z02", "漫漫": "E3", "盼盼": "76", "咪小窝": "81" },
|
||||||
|
"#FFC4AA": { "MARD": "G02", "COCO": "Z05", "漫漫": "E4", "盼盼": "49", "咪小窝": "49" },
|
||||||
|
"#F4C3A5": { "MARD": "G03", "COCO": "Z06", "漫漫": "E5", "盼盼": "80", "咪小窝": "85" },
|
||||||
|
"#E1B383": { "MARD": "G04", "COCO": "Z08", "漫漫": "E6", "盼盼": "19", "咪小窝": "19" },
|
||||||
|
"#EDB045": { "MARD": "G05", "COCO": "Z10", "漫漫": "B7", "盼盼": "43", "咪小窝": "43" },
|
||||||
|
"#E99C17": { "MARD": "G06", "COCO": "Z11", "漫漫": "B8", "盼盼": "50", "咪小窝": "50" },
|
||||||
|
"#9D5B3E": { "MARD": "G07", "COCO": "Z18", "漫漫": "E7", "盼盼": "17", "咪小窝": "17" },
|
||||||
|
"#753832": { "MARD": "G08", "COCO": "Z22", "漫漫": "E8", "盼盼": "12", "咪小窝": "12" },
|
||||||
|
"#E6B483": { "MARD": "G09", "COCO": "Z09", "漫漫": "E10", "盼盼": "91", "咪小窝": "102" },
|
||||||
|
"#D98C39": { "MARD": "G10", "COCO": "Z15", "漫漫": "B9", "盼盼": "87", "咪小窝": "101" },
|
||||||
|
"#E0C593": { "MARD": "G11", "COCO": "Z07", "漫漫": "E12", "盼盼": "112", "咪小窝": "118" },
|
||||||
|
"#FFC890": { "MARD": "G12", "COCO": "Z13", "漫漫": "E13", "盼盼": "113", "咪小窝": "127" },
|
||||||
|
"#B7714A": { "MARD": "G13", "COCO": "Z14", "漫漫": "E17", "盼盼": "115", "咪小窝": "114" },
|
||||||
|
"#8D614C": { "MARD": "G14", "COCO": "Z17", "漫漫": "E14", "盼盼": "114", "咪小窝": "123" },
|
||||||
|
"#FCF9E0": { "MARD": "G15", "COCO": "Z03", "漫漫": "E19", "盼盼": "133", "咪小窝": "143" },
|
||||||
|
"#F2D9BA": { "MARD": "G16", "COCO": "Z04", "漫漫": "E20", "盼盼": "134", "咪小窝": "138" },
|
||||||
|
"#78524B": { "MARD": "G17", "COCO": "Z16", "漫漫": "E22", "盼盼": "144", "咪小窝": "137" },
|
||||||
|
"#FFE4CC": { "MARD": "G18", "COCO": "Z01", "漫漫": "DH5", "盼盼": "203", "咪小窝": "203" },
|
||||||
|
"#E07935": { "MARD": "G19", "COCO": "Z12", "漫漫": "DH3", "盼盼": "208", "咪小窝": "195" },
|
||||||
|
"#A94023": { "MARD": "G20", "COCO": "Z19", "漫漫": "DH13", "盼盼": "199", "咪小窝": "199" },
|
||||||
|
"#B88558": { "MARD": "G21", "COCO": "Z24", "漫漫": "Q8", "盼盼": "247", "咪小窝": "247" },
|
||||||
|
"#FDFBFF": { "MARD": "H01", "COCO": "A02", "漫漫": "F1", "盼盼": "15", "咪小窝": "15" },
|
||||||
|
"#FEFFFF": { "MARD": "H02", "COCO": "A01", "漫漫": "F2", "盼盼": "1", "咪小窝": "1" },
|
||||||
|
"#B6B1BA": { "MARD": "H03", "COCO": "B03", "漫漫": "F3", "盼盼": "13", "咪小窝": "13" },
|
||||||
|
"#89858C": { "MARD": "H04", "COCO": "B05", "漫漫": "F4", "盼盼": "78", "咪小窝": "83" },
|
||||||
|
"#48464E": { "MARD": "H05", "COCO": "B06", "漫漫": "F5", "盼盼": "45", "咪小窝": "45" },
|
||||||
|
"#2F2B2F": { "MARD": "H06", "COCO": "B07", "漫漫": "F6", "盼盼": "51", "咪小窝": "70" },
|
||||||
|
"#000000": { "MARD": "H07", "COCO": "B09", "漫漫": "F7", "盼盼": "14", "咪小窝": "14" },
|
||||||
|
"#E7D6DB": { "MARD": "H08", "COCO": "A09", "漫漫": "F8", "盼盼": "85", "咪小窝": "86" },
|
||||||
|
"#EDEDED": { "MARD": "H09", "COCO": "A08", "漫漫": "F10", "盼盼": "95", "咪小窝": "87" },
|
||||||
|
"#EEE9EA": { "MARD": "H10", "COCO": "A10", "漫漫": "F9", "盼盼": "86", "咪小窝": "88" },
|
||||||
|
"#CECDD5": { "MARD": "H11", "COCO": "B01", "漫漫": "F11", "盼盼": "123", "咪小窝": "121" },
|
||||||
|
"#FFF5ED": { "MARD": "H12", "COCO": "A04", "漫漫": "E18", "盼盼": "132", "咪小窝": "144" },
|
||||||
|
"#F5ECD2": { "MARD": "H13", "COCO": "A06", "漫漫": "E23", "盼盼": "145", "咪小窝": "146" },
|
||||||
|
"#CFD7D3": { "MARD": "H14", "COCO": "B02", "漫漫": "F12", "盼盼": "146", "咪小窝": "145" },
|
||||||
|
"#98A6A8": { "MARD": "H15", "COCO": "B04", "漫漫": "DH4", "盼盼": "201", "咪小窝": "201" },
|
||||||
|
"#1D1414": { "MARD": "H16", "COCO": "B08", "漫漫": "DH11", "盼盼": "200", "咪小窝": "200" },
|
||||||
|
"#F1EDED": { "MARD": "H17", "COCO": "A07", "漫漫": "IC6", "盼盼": "214", "咪小窝": "214" },
|
||||||
|
"#FFFDF0": { "MARD": "H18", "COCO": "A03", "漫漫": "IC1", "盼盼": "219", "咪小窝": "204" },
|
||||||
|
"#F6EFE2": { "MARD": "H19", "COCO": "A05", "漫漫": "IC11", "盼盼": "209", "咪小窝": "209" },
|
||||||
|
"#949FA3": { "MARD": "H20", "COCO": "B10", "漫漫": "Q12", "盼盼": "251", "咪小窝": "236" },
|
||||||
|
"#FFFBE1": { "MARD": "H21", "COCO": "A11", "漫漫": "G1", "盼盼": "291", "咪小窝": "276" },
|
||||||
|
"#CACAD4": { "MARD": "H22", "COCO": "A12", "漫漫": "G2", "盼盼": "277", "咪小窝": "277" },
|
||||||
|
"#9A9D94": { "MARD": "H23", "COCO": "B11", "漫漫": "G11", "盼盼": "278", "咪小窝": "278" },
|
||||||
|
"#BCC6B8": { "MARD": "M01", "COCO": "Y01", "漫漫": "YX11", "盼盼": "168", "咪小窝": "168" },
|
||||||
|
"#8AA386": { "MARD": "M02", "COCO": "Y02", "漫漫": "YX12", "盼盼": "172", "咪小窝": "172" },
|
||||||
|
"#697D80": { "MARD": "M03", "COCO": "Y03", "漫漫": "YX2", "盼盼": "166", "咪小窝": "166" },
|
||||||
|
"#E3D2BC": { "MARD": "M04", "COCO": "Y04", "漫漫": "YX15", "盼盼": "167", "咪小窝": "167" },
|
||||||
|
"#D0CCAA": { "MARD": "M05", "COCO": "Y05", "漫漫": "YX6", "盼盼": "174", "咪小窝": "159" },
|
||||||
|
"#B0A782": { "MARD": "M06", "COCO": "Y06", "漫漫": "YX1", "盼盼": "169", "咪小窝": "169" },
|
||||||
|
"#B4A497": { "MARD": "M07", "COCO": "Y07", "漫漫": "YX13", "盼盼": "171", "咪小窝": "171" },
|
||||||
|
"#B38281": { "MARD": "M08", "COCO": "Y08", "漫漫": "YX14", "盼盼": "177", "咪小窝": "162" },
|
||||||
|
"#A58767": { "MARD": "M09", "COCO": "Y09", "漫漫": "YX10", "盼盼": "170", "咪小窝": "170" },
|
||||||
|
"#C5B2BC": { "MARD": "M10", "COCO": "Y10", "漫漫": "YX9", "盼盼": "164", "咪小窝": "164" },
|
||||||
|
"#9F7594": { "MARD": "M11", "COCO": "Y11", "漫漫": "YX4", "盼盼": "176", "咪小窝": "161" },
|
||||||
|
"#644749": { "MARD": "M12", "COCO": "Y12", "漫漫": "YX5", "盼盼": "173", "咪小窝": "173" },
|
||||||
|
"#D19066": { "MARD": "M13", "COCO": "Y13", "漫漫": "YX8", "盼盼": "175", "咪小窝": "160" },
|
||||||
|
"#C77362": { "MARD": "M14", "COCO": "Y14", "漫漫": "YX3", "盼盼": "165", "咪小窝": "165" },
|
||||||
|
"#757D78": { "MARD": "M15", "COCO": "Y15", "漫漫": "YX7", "盼盼": "178", "咪小窝": "163" },
|
||||||
|
"#FCF7F8": { "MARD": "P01", "COCO": "M01", "漫漫": "P1", "盼盼": "71", "咪小窝": "62" },
|
||||||
|
"#B0A9AC": { "MARD": "P02", "COCO": "M02", "漫漫": "P2", "盼盼": "55", "咪小窝": "69" },
|
||||||
|
"#AFDCAB": { "MARD": "P03", "COCO": "M03", "漫漫": "P4", "盼盼": "73", "咪小窝": "66" },
|
||||||
|
"#FEA49F": { "MARD": "P04", "COCO": "M04", "漫漫": "P5", "盼盼": "72", "咪小窝": "64" },
|
||||||
|
"#EE8C3E": { "MARD": "P05", "COCO": "M05", "漫漫": "P3", "盼盼": "56", "咪小窝": "63" },
|
||||||
|
"#5FD0A7": { "MARD": "P06", "COCO": "M06", "漫漫": "P8", "盼盼": "157", "咪小窝": "65" },
|
||||||
|
"#EB9270": { "MARD": "P07", "COCO": "M07", "漫漫": "P6", "盼盼": "159", "咪小窝": "68" },
|
||||||
|
"#F0D958": { "MARD": "P08", "COCO": "M08", "漫漫": "P7", "盼盼": "158", "咪小窝": "67" },
|
||||||
|
"#D9D9D9": { "MARD": "P09", "COCO": "M09", "漫漫": "P13", "盼盼": "195", "咪小窝": "178" },
|
||||||
|
"#D9C7EA": { "MARD": "P10", "COCO": "M10", "漫漫": "P18", "盼盼": "187", "咪小窝": "187" },
|
||||||
|
"#F3ECC9": { "MARD": "P11", "COCO": "M11", "漫漫": "P9", "盼盼": "185", "咪小窝": "185" },
|
||||||
|
"#E6EEF2": { "MARD": "P12", "COCO": "M12", "漫漫": "P12", "盼盼": "190", "咪小窝": "190" },
|
||||||
|
"#AACBEF": { "MARD": "P13", "COCO": "M13", "漫漫": "P17", "盼盼": "193", "咪小窝": "176" },
|
||||||
|
"#337680": { "MARD": "P14", "COCO": "M14", "漫漫": "P22", "盼盼": "183", "咪小窝": "183" },
|
||||||
|
"#668575": { "MARD": "P15", "COCO": "M15", "漫漫": "P23", "盼盼": "184", "咪小窝": "184" },
|
||||||
|
"#FEBF45": { "MARD": "P16", "COCO": "M16", "漫漫": "P14", "盼盼": "182", "咪小窝": "182" },
|
||||||
|
"#FEA324": { "MARD": "P17", "COCO": "M17", "漫漫": "P19", "盼盼": "179", "咪小窝": "179" },
|
||||||
|
"#FEB89F": { "MARD": "P18", "COCO": "M18", "漫漫": "P11", "盼盼": "194", "咪小窝": "177" },
|
||||||
|
"#FFFEEC": { "MARD": "P19", "COCO": "M19", "漫漫": "P10", "盼盼": "186", "咪小窝": "186" },
|
||||||
|
"#FEBECF": { "MARD": "P20", "COCO": "M21", "漫漫": "P15", "盼盼": "188", "咪小窝": "180" },
|
||||||
|
"#ECBEBF": { "MARD": "P21", "COCO": "M20", "漫漫": "P20", "盼盼": "180", "咪小窝": "188" },
|
||||||
|
"#E4A89F": { "MARD": "P22", "COCO": "M22", "漫漫": "P16", "盼盼": "189", "咪小窝": "189" },
|
||||||
|
"#A56268": { "MARD": "P23", "COCO": "M23", "漫漫": "P21", "盼盼": "181", "咪小窝": "181" },
|
||||||
|
"#F2A5E8": { "MARD": "Q01", "COCO": "W3", "漫漫": "W3", "盼盼": "109", "咪小窝": "W3" },
|
||||||
|
"#E9EC91": { "MARD": "Q02", "COCO": "W4", "漫漫": "W4", "盼盼": "111", "咪小窝": "W4" },
|
||||||
|
"#FFFF00": { "MARD": "Q03", "COCO": "W1", "漫漫": "W1", "盼盼": "107", "咪小窝": "W1" },
|
||||||
|
"#FFEBFA": { "MARD": "Q04", "COCO": "W2", "漫漫": "W2", "盼盼": "110", "咪小窝": "W2" },
|
||||||
|
"#76CEDE": { "MARD": "Q05", "COCO": "W5", "漫漫": "W5", "盼盼": "108", "咪小窝": "W5" },
|
||||||
|
"#D50D21": { "MARD": "R01", "COCO": "L01", "漫漫": "T1", "盼盼": "67", "咪小窝": "52" },
|
||||||
|
"#F92F83": { "MARD": "R02", "COCO": "L02", "漫漫": "N1", "盼盼": "24", "咪小窝": "24" },
|
||||||
|
"#FD8324": { "MARD": "R03", "COCO": "L03", "漫漫": "N2", "盼盼": "22", "咪小窝": "22" },
|
||||||
|
"#F8EC31": { "MARD": "R04", "COCO": "L04", "漫漫": "N3", "盼盼": "21", "咪小窝": "21" },
|
||||||
|
"#35C75B": { "MARD": "R05", "COCO": "L05", "漫漫": "N4", "盼盼": "23", "咪小窝": "23" },
|
||||||
|
"#238891": { "MARD": "R06", "COCO": "L06", "漫漫": "T4", "盼盼": "69", "咪小窝": "55" },
|
||||||
|
"#19779D": { "MARD": "R07", "COCO": "L07", "漫漫": "T5", "盼盼": "37", "咪小窝": "37" },
|
||||||
|
"#1A60C3": { "MARD": "R08", "COCO": "L08", "漫漫": "T3", "盼盼": "68", "咪小窝": "54" },
|
||||||
|
"#9A56B4": { "MARD": "R09", "COCO": "L09", "漫漫": "T2", "盼盼": "70", "咪小窝": "56" },
|
||||||
|
"#FFDB4C": { "MARD": "R10", "COCO": "L10", "漫漫": "L2", "盼盼": "156", "咪小窝": "53" },
|
||||||
|
"#FFEBFA": { "MARD": "R11", "COCO": "L11", "漫漫": "T6", "盼盼": "151", "咪小窝": "151" },
|
||||||
|
"#D8D5CE": { "MARD": "R12", "COCO": "L12", "漫漫": "T7", "盼盼": "160", "咪小窝": "157" },
|
||||||
|
"#55514C": { "MARD": "R13", "COCO": "L13", "漫漫": "-", "盼盼": "152", "咪小窝": "152" },
|
||||||
|
"#9FE4DF": { "MARD": "R14", "COCO": "S1", "漫漫": "S1", "盼盼": "231", "咪小窝": "231" },
|
||||||
|
"#77CEE9": { "MARD": "R15", "COCO": "S2", "漫漫": "S2", "盼盼": "237", "咪小窝": "224" },
|
||||||
|
"#3ECFCA": { "MARD": "R16", "COCO": "S3", "漫漫": "S3", "盼盼": "238", "咪小窝": "225" },
|
||||||
|
"#4A867A": { "MARD": "R17", "COCO": "S4", "漫漫": "S5", "盼盼": "233", "咪小窝": "233" },
|
||||||
|
"#7FCD9D": { "MARD": "R18", "COCO": "S5", "漫漫": "S4", "盼盼": "235", "咪小窝": "222" },
|
||||||
|
"#CDE55D": { "MARD": "R19", "COCO": "S6", "漫漫": "S11", "盼盼": "227", "咪小窝": "227" },
|
||||||
|
"#E8C7B4": { "MARD": "R20", "COCO": "S7", "漫漫": "S6", "盼盼": "230", "咪小窝": "230" },
|
||||||
|
"#AD6F3C": { "MARD": "R21", "COCO": "S8", "漫漫": "S13", "盼盼": "234", "咪小窝": "221" },
|
||||||
|
"#6C372F": { "MARD": "R22", "COCO": "S9", "漫漫": "S15", "盼盼": "226", "咪小窝": "226" },
|
||||||
|
"#FEB872": { "MARD": "R23", "COCO": "S10", "漫漫": "S12", "盼盼": "224", "咪小窝": "219" },
|
||||||
|
"#F3C1C0": { "MARD": "R24", "COCO": "S11", "漫漫": "S4", "盼盼": "228", "咪小窝": "228" },
|
||||||
|
"#C9675E": { "MARD": "R25", "COCO": "S12", "漫漫": "S14", "盼盼": "225", "咪小窝": "220" },
|
||||||
|
"#D293BE": { "MARD": "R26", "COCO": "S13", "漫漫": "S9", "盼盼": "229", "咪小窝": "229" },
|
||||||
|
"#EA8CB1": { "MARD": "R27", "COCO": "S14", "漫漫": "S8", "盼盼": "232", "咪小窝": "232" },
|
||||||
|
"#9C87D6": { "MARD": "R28", "COCO": "S15", "漫漫": "S10", "盼盼": "236", "咪小窝": "223" },
|
||||||
|
"#FFFFFF": { "MARD": "T01", "COCO": "L14", "漫漫": "L6", "盼盼": "155", "咪小窝": "51" },
|
||||||
|
"#FD6FB4": { "MARD": "Y01", "COCO": "N01", "漫漫": "Y1", "盼盼": "59", "咪小窝": "59" },
|
||||||
|
"#FEB481": { "MARD": "Y02", "COCO": "N02", "漫漫": "Y2", "盼盼": "60", "咪小窝": "60" },
|
||||||
|
"#D7FAA0": { "MARD": "Y03", "COCO": "N03", "漫漫": "Y3", "盼盼": "57", "咪小窝": "57" },
|
||||||
|
"#8BDBFA": { "MARD": "Y04", "COCO": "N04", "漫漫": "Y4", "盼盼": "58", "咪小窝": "58" },
|
||||||
|
"#E987EA": { "MARD": "Y05", "COCO": "N05", "漫漫": "Y5", "盼盼": "61", "咪小窝": "61" },
|
||||||
|
"#DAABB3": { "MARD": "ZG1", "COCO": "GB1", "漫漫": "ZG1", "盼盼": "254", "咪小窝": "ZG1" },
|
||||||
|
"#D6AA87": { "MARD": "ZG2", "COCO": "GB2", "漫漫": "ZG2", "盼盼": "255", "咪小窝": "ZG2" },
|
||||||
|
"#C1BD8D": { "MARD": "ZG3", "COCO": "GB3", "漫漫": "ZG3", "盼盼": "256", "咪小窝": "ZG3" },
|
||||||
|
"#96869F": { "MARD": "ZG4", "COCO": "GB4", "漫漫": "ZG4", "盼盼": "257", "咪小窝": "ZG4" },
|
||||||
|
"#8490A6": { "MARD": "ZG5", "COCO": "GB5", "漫漫": "ZG5", "盼盼": "258", "咪小窝": "ZG5" },
|
||||||
|
"#94BFE2": { "MARD": "ZG6", "COCO": "GB6", "漫漫": "ZG6", "盼盼": "259", "咪小窝": "ZG6" },
|
||||||
|
"#E2A9D2": { "MARD": "ZG7", "COCO": "GB7", "漫漫": "ZG7", "盼盼": "260", "咪小窝": "ZG7" },
|
||||||
|
"#AB91C0": { "MARD": "ZG8", "COCO": "GB8", "漫漫": "ZG8", "盼盼": "261", "咪小窝": "ZG8" }
|
||||||
|
}
|
||||||
@@ -21,6 +21,12 @@ import DownloadSettingsModal, { gridLineColorOptions } from '../components/Downl
|
|||||||
import { downloadImage } from '../utils/imageDownloader';
|
import { downloadImage } from '../utils/imageDownloader';
|
||||||
|
|
||||||
import beadPaletteData from './beadPaletteData.json';
|
import beadPaletteData from './beadPaletteData.json';
|
||||||
|
import {
|
||||||
|
colorSystemOptions,
|
||||||
|
convertPaletteToColorSystem,
|
||||||
|
getDisplayColorKey,
|
||||||
|
ColorSystem
|
||||||
|
} from '../utils/colorSystemUtils';
|
||||||
|
|
||||||
// 添加自定义动画样式
|
// 添加自定义动画样式
|
||||||
const floatAnimation = `
|
const floatAnimation = `
|
||||||
@@ -108,7 +114,7 @@ const TRANSPARENT_KEY = 'ERASE';
|
|||||||
const transparentColorData: MappedPixel = { key: TRANSPARENT_KEY, color: '#FFFFFF', isExternal: true };
|
const transparentColorData: MappedPixel = { key: TRANSPARENT_KEY, color: '#FFFFFF', isExternal: true };
|
||||||
|
|
||||||
// ++ Add definition for background color keys ++
|
// ++ Add definition for background color keys ++
|
||||||
const BACKGROUND_COLOR_KEYS = ['T1', 'H1', 'H2']; // 可以根据需要调整
|
const BACKGROUND_COLOR_KEYS = ['T01', 'H01', 'H02']; // 修正为与映射表一致的格式
|
||||||
|
|
||||||
// 1. 导入新组件
|
// 1. 导入新组件
|
||||||
import PixelatedPreviewCanvas from '../components/PixelatedPreviewCanvas';
|
import PixelatedPreviewCanvas from '../components/PixelatedPreviewCanvas';
|
||||||
@@ -128,6 +134,10 @@ export default function Home() {
|
|||||||
// 添加像素化模式状态
|
// 添加像素化模式状态
|
||||||
const [pixelationMode, setPixelationMode] = useState<PixelationMode>(PixelationMode.Dominant); // 默认为卡通模式
|
const [pixelationMode, setPixelationMode] = useState<PixelationMode>(PixelationMode.Dominant); // 默认为卡通模式
|
||||||
const [selectedPaletteKeySet, setSelectedPaletteKeySet] = useState<PaletteOptionKey>('all');
|
const [selectedPaletteKeySet, setSelectedPaletteKeySet] = useState<PaletteOptionKey>('all');
|
||||||
|
|
||||||
|
// 新增:色号系统选择状态
|
||||||
|
const [selectedColorSystem, setSelectedColorSystem] = useState<ColorSystem>('MARD');
|
||||||
|
|
||||||
const [activeBeadPalette, setActiveBeadPalette] = useState<PaletteColor[]>(() => {
|
const [activeBeadPalette, setActiveBeadPalette] = useState<PaletteColor[]>(() => {
|
||||||
const initialKey = 'all'; // Match the key used above
|
const initialKey = 'all'; // Match the key used above
|
||||||
const options = paletteOptions[initialKey];
|
const options = paletteOptions[initialKey];
|
||||||
@@ -184,8 +194,10 @@ export default function Home() {
|
|||||||
const isNotExcluded = !excludedColorKeys.has(color.key);
|
const isNotExcluded = !excludedColorKeys.has(color.key);
|
||||||
return isInSelectedPalette && isNotExcluded;
|
return isInSelectedPalette && isNotExcluded;
|
||||||
});
|
});
|
||||||
setActiveBeadPalette(newActiveBeadPalette);
|
// 根据选择的色号系统转换调色板
|
||||||
}, [selectedPaletteKeySet, excludedColorKeys, remapTrigger]);
|
const convertedPalette = convertPaletteToColorSystem(newActiveBeadPalette, selectedColorSystem);
|
||||||
|
setActiveBeadPalette(convertedPalette);
|
||||||
|
}, [selectedPaletteKeySet, excludedColorKeys, remapTrigger, selectedColorSystem]);
|
||||||
|
|
||||||
// ++ 添加:当状态变化时同步更新输入框的值 ++
|
// ++ 添加:当状态变化时同步更新输入框的值 ++
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -204,8 +216,14 @@ export default function Home() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Sort colors like the stats list, if desired
|
// Sort colors like the stats list, if desired
|
||||||
return Array.from(uniqueColorsMap.values()).sort((a, b) => sortColorKeys(a.key, b.key));
|
const originalColors = Array.from(uniqueColorsMap.values()).sort((a, b) => sortColorKeys(a.key, b.key));
|
||||||
}, [mappedPixelData]); // Recalculate when pixel data changes
|
|
||||||
|
// 转换色号系统
|
||||||
|
return originalColors.map(color => ({
|
||||||
|
...color,
|
||||||
|
key: getDisplayColorKey(color.key, selectedColorSystem)
|
||||||
|
}));
|
||||||
|
}, [mappedPixelData, selectedColorSystem]); // 添加selectedColorSystem到依赖项
|
||||||
|
|
||||||
// 初始化时从本地存储加载自定义色板选择
|
// 初始化时从本地存储加载自定义色板选择
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -232,8 +250,10 @@ export default function Home() {
|
|||||||
const isNotExcluded = !excludedColorKeys.has(color.key);
|
const isNotExcluded = !excludedColorKeys.has(color.key);
|
||||||
return isSelectedInCustomPalette && isNotExcluded;
|
return isSelectedInCustomPalette && isNotExcluded;
|
||||||
});
|
});
|
||||||
setActiveBeadPalette(newActiveBeadPalette);
|
// 根据选择的色号系统转换调色板
|
||||||
}, [customPaletteSelections, excludedColorKeys, remapTrigger]);
|
const convertedPalette = convertPaletteToColorSystem(newActiveBeadPalette, selectedColorSystem);
|
||||||
|
setActiveBeadPalette(convertedPalette);
|
||||||
|
}, [customPaletteSelections, excludedColorKeys, remapTrigger, selectedColorSystem]);
|
||||||
|
|
||||||
// --- Event Handlers ---
|
// --- Event Handlers ---
|
||||||
|
|
||||||
@@ -607,10 +627,12 @@ export default function Home() {
|
|||||||
let totalCount = 0;
|
let totalCount = 0;
|
||||||
mergedData.flat().forEach(cell => {
|
mergedData.flat().forEach(cell => {
|
||||||
if (cell && cell.key && !cell.isExternal) {
|
if (cell && cell.key && !cell.isExternal) {
|
||||||
if (!counts[cell.key]) {
|
// 使用显示的色号作为统计键值
|
||||||
counts[cell.key] = { count: 0, color: cell.color };
|
const displayKey = cell.key;
|
||||||
|
if (!counts[displayKey]) {
|
||||||
|
counts[displayKey] = { count: 0, color: cell.color };
|
||||||
}
|
}
|
||||||
counts[cell.key].count++;
|
counts[displayKey].count++;
|
||||||
totalCount++;
|
totalCount++;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -674,7 +696,8 @@ export default function Home() {
|
|||||||
totalBeadCount,
|
totalBeadCount,
|
||||||
options: options || downloadOptions,
|
options: options || downloadOptions,
|
||||||
activeBeadPalette,
|
activeBeadPalette,
|
||||||
selectedPaletteKeySet
|
selectedPaletteKeySet,
|
||||||
|
selectedColorSystem
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1084,6 +1107,12 @@ export default function Home() {
|
|||||||
importPaletteInputRef.current?.click();
|
importPaletteInputRef.current?.click();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 色号系统选择处理函数
|
||||||
|
const handleColorSystemChange = (event: ChangeEvent<HTMLSelectElement>) => {
|
||||||
|
const newColorSystem = event.target.value as ColorSystem;
|
||||||
|
setSelectedColorSystem(newColorSystem);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{/* 添加自定义动画样式 */}
|
{/* 添加自定义动画样式 */}
|
||||||
@@ -1310,6 +1339,23 @@ export default function Home() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* 色号系统选择器 */}
|
||||||
|
<div className="sm:col-span-2">
|
||||||
|
<label htmlFor="colorSystemSelect" className="block text-xs sm:text-sm font-medium text-gray-700 dark:text-gray-300 mb-1.5 sm:mb-2">色号系统:</label>
|
||||||
|
<select
|
||||||
|
id="colorSystemSelect"
|
||||||
|
value={selectedColorSystem}
|
||||||
|
onChange={handleColorSystemChange}
|
||||||
|
className="w-full p-1.5 border border-gray-300 dark:border-gray-600 rounded-md text-sm focus:ring-blue-500 focus:border-blue-500 h-9 shadow-sm bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-200"
|
||||||
|
>
|
||||||
|
{colorSystemOptions.map(option => (
|
||||||
|
<option key={option.key} value={option.key} className="bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-200">
|
||||||
|
{option.name}
|
||||||
|
</option>
|
||||||
|
))}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* 自定义色板按钮 */}
|
{/* 自定义色板按钮 */}
|
||||||
<div className="sm:col-span-2 mt-3">
|
<div className="sm:col-span-2 mt-3">
|
||||||
<button
|
<button
|
||||||
@@ -1352,6 +1398,7 @@ export default function Home() {
|
|||||||
// ++ 传递新的处理函数 ++
|
// ++ 传递新的处理函数 ++
|
||||||
onExportCustomPalette={handleExportCustomPalette}
|
onExportCustomPalette={handleExportCustomPalette}
|
||||||
onImportCustomPalette={triggerImportPalette}
|
onImportCustomPalette={triggerImportPalette}
|
||||||
|
selectedColorSystem={selectedColorSystem}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1419,6 +1466,7 @@ export default function Home() {
|
|||||||
selectedColor={selectedColor}
|
selectedColor={selectedColor}
|
||||||
onColorSelect={setSelectedColor}
|
onColorSelect={setSelectedColor}
|
||||||
transparentKey={TRANSPARENT_KEY}
|
transparentKey={TRANSPARENT_KEY}
|
||||||
|
selectedColorSystem={selectedColorSystem}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1481,7 +1529,7 @@ export default function Home() {
|
|||||||
style={{ backgroundColor: isExcluded ? '#666' : colorHex }} // Darker gray for excluded swatch
|
style={{ backgroundColor: isExcluded ? '#666' : colorHex }} // Darker gray for excluded swatch
|
||||||
></span>
|
></span>
|
||||||
{/* Adjust text color for key (normal and excluded) */}
|
{/* Adjust text color for key (normal and excluded) */}
|
||||||
<span className={`font-mono font-medium ${isExcluded ? 'text-red-700 dark:text-red-400' : 'text-gray-800 dark:text-gray-200'}`}>{key}</span>
|
<span className={`font-mono font-medium ${isExcluded ? 'text-red-700 dark:text-red-400' : 'text-gray-800 dark:text-gray-200'}`}>{getDisplayColorKey(key, selectedColorSystem)}</span>
|
||||||
</div>
|
</div>
|
||||||
{/* Adjust text color for count (normal and excluded) */}
|
{/* Adjust text color for count (normal and excluded) */}
|
||||||
<span className={`text-xs ${isExcluded ? 'text-red-600 dark:text-red-400 line-through' : 'text-gray-600 dark:text-gray-300'}`}>{count} 颗</span>
|
<span className={`text-xs ${isExcluded ? 'text-red-600 dark:text-red-400 line-through' : 'text-gray-600 dark:text-gray-300'}`}>{count} 颗</span>
|
||||||
@@ -1521,7 +1569,7 @@ export default function Home() {
|
|||||||
className="inline-block w-4 h-4 rounded border border-gray-400 dark:border-gray-500 flex-shrink-0"
|
className="inline-block w-4 h-4 rounded border border-gray-400 dark:border-gray-500 flex-shrink-0"
|
||||||
style={{ backgroundColor: colorData?.hex || '#666666' }}
|
style={{ backgroundColor: colorData?.hex || '#666666' }}
|
||||||
></span>
|
></span>
|
||||||
<span className="font-mono text-xs text-gray-800 dark:text-gray-200">{key}</span>
|
<span className="font-mono text-xs text-gray-800 dark:text-gray-200">{getDisplayColorKey(key, selectedColorSystem)}</span>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
@@ -1630,7 +1678,7 @@ export default function Home() {
|
|||||||
|
|
||||||
{/* Tooltip Display (Needs update in GridTooltip.tsx) */}
|
{/* Tooltip Display (Needs update in GridTooltip.tsx) */}
|
||||||
{tooltipData && (
|
{tooltipData && (
|
||||||
<GridTooltip tooltipData={tooltipData} />
|
<GridTooltip tooltipData={tooltipData} selectedColorSystem={selectedColorSystem} />
|
||||||
)}
|
)}
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import { getDisplayColorKey, ColorSystem } from '../utils/colorSystemUtils';
|
||||||
|
|
||||||
// Define the structure of the color data expected by the palette
|
// Define the structure of the color data expected by the palette
|
||||||
interface ColorData {
|
interface ColorData {
|
||||||
@@ -14,13 +15,15 @@ interface ColorPaletteProps {
|
|||||||
selectedColor: ColorData | null;
|
selectedColor: ColorData | null;
|
||||||
onColorSelect: (colorData: ColorData) => void;
|
onColorSelect: (colorData: ColorData) => void;
|
||||||
transparentKey?: string; // 添加可选参数,用于识别哪个是透明/橡皮擦
|
transparentKey?: string; // 添加可选参数,用于识别哪个是透明/橡皮擦
|
||||||
|
selectedColorSystem?: ColorSystem; // 添加色号系统参数
|
||||||
}
|
}
|
||||||
|
|
||||||
const ColorPalette: React.FC<ColorPaletteProps> = ({
|
const ColorPalette: React.FC<ColorPaletteProps> = ({
|
||||||
colors,
|
colors,
|
||||||
selectedColor,
|
selectedColor,
|
||||||
onColorSelect,
|
onColorSelect,
|
||||||
transparentKey
|
transparentKey,
|
||||||
|
selectedColorSystem
|
||||||
}) => {
|
}) => {
|
||||||
if (!colors || colors.length === 0) {
|
if (!colors || colors.length === 0) {
|
||||||
// Apply dark mode text color
|
// Apply dark mode text color
|
||||||
@@ -49,8 +52,8 @@ const ColorPalette: React.FC<ColorPaletteProps> = ({
|
|||||||
style={isTransparent ? {} : { backgroundColor: colorData.color }}
|
style={isTransparent ? {} : { backgroundColor: colorData.color }}
|
||||||
title={isTransparent
|
title={isTransparent
|
||||||
? '选择橡皮擦 (清除单元格)'
|
? '选择橡皮擦 (清除单元格)'
|
||||||
: `选择 ${colorData.key} (${colorData.color})`}
|
: `选择 ${selectedColorSystem ? getDisplayColorKey(colorData.key, selectedColorSystem) : colorData.key} (${colorData.color})`}
|
||||||
aria-label={isTransparent ? '选择橡皮擦' : `选择颜色 ${colorData.key}`}
|
aria-label={isTransparent ? '选择橡皮擦' : `选择颜色 ${selectedColorSystem ? getDisplayColorKey(colorData.key, selectedColorSystem) : colorData.key}`}
|
||||||
>
|
>
|
||||||
{/* 如果是透明/橡皮擦按钮,显示叉号图标 */}
|
{/* 如果是透明/橡皮擦按钮,显示叉号图标 */}
|
||||||
{isTransparent && (
|
{isTransparent && (
|
||||||
|
|||||||
@@ -3,13 +3,39 @@
|
|||||||
import React, { useState, useEffect } from 'react';
|
import React, { useState, useEffect } from 'react';
|
||||||
import { PaletteColor } from '../utils/pixelation';
|
import { PaletteColor } from '../utils/pixelation';
|
||||||
import { PaletteSelections } from '../utils/localStorageUtils';
|
import { PaletteSelections } from '../utils/localStorageUtils';
|
||||||
|
import { getDisplayColorKey, ColorSystem } from '../utils/colorSystemUtils';
|
||||||
|
|
||||||
// 对颜色进行分组的工具函数,按前缀分组
|
// 对颜色进行分组的工具函数,按前缀分组
|
||||||
function groupColorsByPrefix(colors: PaletteColor[]): Record<string, PaletteColor[]> {
|
function groupColorsByPrefix(colors: PaletteColor[], selectedColorSystem: ColorSystem): Record<string, PaletteColor[]> {
|
||||||
const groups: Record<string, PaletteColor[]> = {};
|
const groups: Record<string, PaletteColor[]> = {};
|
||||||
|
|
||||||
colors.forEach(color => {
|
colors.forEach(color => {
|
||||||
const prefix = color.key.match(/^[A-Z]+/)?.[0] || '其他';
|
const displayKey = getDisplayColorKey(color.key, selectedColorSystem);
|
||||||
|
|
||||||
|
let prefix: string;
|
||||||
|
if (selectedColorSystem === '盼盼' || selectedColorSystem === '咪小窝') {
|
||||||
|
// 对于纯数字的色号系统,按数字范围分组
|
||||||
|
if (/^\d+$/.test(displayKey)) {
|
||||||
|
const num = parseInt(displayKey, 10);
|
||||||
|
if (num <= 20) {
|
||||||
|
prefix = '1-20';
|
||||||
|
} else if (num <= 50) {
|
||||||
|
prefix = '21-50';
|
||||||
|
} else if (num <= 100) {
|
||||||
|
prefix = '51-100';
|
||||||
|
} else if (num <= 200) {
|
||||||
|
prefix = '101-200';
|
||||||
|
} else {
|
||||||
|
prefix = '200+';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
prefix = '其他';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 对于有字母前缀的色号系统,按字母前缀分组
|
||||||
|
prefix = displayKey.match(/^[A-Z]+/)?.[0] || '其他';
|
||||||
|
}
|
||||||
|
|
||||||
if (!groups[prefix]) {
|
if (!groups[prefix]) {
|
||||||
groups[prefix] = [];
|
groups[prefix] = [];
|
||||||
}
|
}
|
||||||
@@ -19,9 +45,20 @@ function groupColorsByPrefix(colors: PaletteColor[]): Record<string, PaletteColo
|
|||||||
// 对每个组内的颜色按键进行排序
|
// 对每个组内的颜色按键进行排序
|
||||||
Object.keys(groups).forEach(prefix => {
|
Object.keys(groups).forEach(prefix => {
|
||||||
groups[prefix].sort((a, b) => {
|
groups[prefix].sort((a, b) => {
|
||||||
const numA = parseInt(a.key.replace(/^[A-Z]+/, ''), 10) || 0;
|
const displayKeyA = getDisplayColorKey(a.key, selectedColorSystem);
|
||||||
const numB = parseInt(b.key.replace(/^[A-Z]+/, ''), 10) || 0;
|
const displayKeyB = getDisplayColorKey(b.key, selectedColorSystem);
|
||||||
return numA - numB;
|
|
||||||
|
if (selectedColorSystem === '盼盼' || selectedColorSystem === '咪小窝') {
|
||||||
|
// 对于纯数字色号,按数字大小排序
|
||||||
|
const numA = parseInt(displayKeyA, 10) || 0;
|
||||||
|
const numB = parseInt(displayKeyB, 10) || 0;
|
||||||
|
return numA - numB;
|
||||||
|
} else {
|
||||||
|
// 对于有字母前缀的色号,按字母+数字排序
|
||||||
|
const numA = parseInt(displayKeyA.replace(/^[A-Z]+/, ''), 10) || 0;
|
||||||
|
const numB = parseInt(displayKeyB.replace(/^[A-Z]+/, ''), 10) || 0;
|
||||||
|
return numA - numB;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -38,6 +75,7 @@ interface CustomPaletteEditorProps {
|
|||||||
paletteOptions: Record<string, { name: string; keys: string[] }>;
|
paletteOptions: Record<string, { name: string; keys: string[] }>;
|
||||||
onExportCustomPalette: () => void;
|
onExportCustomPalette: () => void;
|
||||||
onImportCustomPalette: () => void;
|
onImportCustomPalette: () => void;
|
||||||
|
selectedColorSystem: ColorSystem;
|
||||||
}
|
}
|
||||||
|
|
||||||
const CustomPaletteEditor: React.FC<CustomPaletteEditorProps> = ({
|
const CustomPaletteEditor: React.FC<CustomPaletteEditorProps> = ({
|
||||||
@@ -50,6 +88,7 @@ const CustomPaletteEditor: React.FC<CustomPaletteEditorProps> = ({
|
|||||||
paletteOptions,
|
paletteOptions,
|
||||||
onExportCustomPalette,
|
onExportCustomPalette,
|
||||||
onImportCustomPalette,
|
onImportCustomPalette,
|
||||||
|
selectedColorSystem,
|
||||||
}) => {
|
}) => {
|
||||||
// 用于跟踪当前展开的颜色组
|
// 用于跟踪当前展开的颜色组
|
||||||
const [expandedGroups, setExpandedGroups] = useState<Record<string, boolean>>({});
|
const [expandedGroups, setExpandedGroups] = useState<Record<string, boolean>>({});
|
||||||
@@ -64,13 +103,16 @@ const CustomPaletteEditor: React.FC<CustomPaletteEditorProps> = ({
|
|||||||
|
|
||||||
// 根据搜索词过滤颜色
|
// 根据搜索词过滤颜色
|
||||||
const filteredColors = searchTerm
|
const filteredColors = searchTerm
|
||||||
? allColors.filter(color =>
|
? allColors.filter(color => {
|
||||||
color.key.toLowerCase().includes(searchTerm.toLowerCase())
|
const originalKey = color.key.toLowerCase();
|
||||||
)
|
const displayKey = getDisplayColorKey(color.key, selectedColorSystem).toLowerCase();
|
||||||
|
const searchLower = searchTerm.toLowerCase();
|
||||||
|
return originalKey.includes(searchLower) || displayKey.includes(searchLower);
|
||||||
|
})
|
||||||
: allColors;
|
: allColors;
|
||||||
|
|
||||||
// 对过滤后的颜色进行分组
|
// 对过滤后的颜色进行分组
|
||||||
const colorGroups = groupColorsByPrefix(filteredColors);
|
const colorGroups = groupColorsByPrefix(filteredColors, selectedColorSystem);
|
||||||
|
|
||||||
// 切换组展开状态
|
// 切换组展开状态
|
||||||
const toggleGroup = (prefix: string) => {
|
const toggleGroup = (prefix: string) => {
|
||||||
@@ -263,7 +305,7 @@ const CustomPaletteEditor: React.FC<CustomPaletteEditorProps> = ({
|
|||||||
className="w-6 h-6 rounded-sm border border-gray-300 dark:border-gray-600 flex-shrink-0"
|
className="w-6 h-6 rounded-sm border border-gray-300 dark:border-gray-600 flex-shrink-0"
|
||||||
style={{ backgroundColor: color.hex }}
|
style={{ backgroundColor: color.hex }}
|
||||||
/>
|
/>
|
||||||
<span className="text-sm text-gray-800 dark:text-gray-200">{color.key}</span>
|
<span className="text-sm text-gray-800 dark:text-gray-200">{getDisplayColorKey(color.key, selectedColorSystem)}</span>
|
||||||
</label>
|
</label>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import { getDisplayColorKey, ColorSystem } from '../utils/colorSystemUtils';
|
||||||
|
|
||||||
interface TooltipData {
|
interface TooltipData {
|
||||||
x: number;
|
x: number;
|
||||||
@@ -9,9 +10,10 @@ interface TooltipData {
|
|||||||
|
|
||||||
interface GridTooltipProps {
|
interface GridTooltipProps {
|
||||||
tooltipData: TooltipData | null;
|
tooltipData: TooltipData | null;
|
||||||
|
selectedColorSystem?: ColorSystem;
|
||||||
}
|
}
|
||||||
|
|
||||||
const GridTooltip: React.FC<GridTooltipProps> = ({ tooltipData }) => {
|
const GridTooltip: React.FC<GridTooltipProps> = ({ tooltipData, selectedColorSystem = 'MARD' }) => {
|
||||||
if (!tooltipData) return null;
|
if (!tooltipData) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -28,7 +30,7 @@ const GridTooltip: React.FC<GridTooltipProps> = ({ tooltipData }) => {
|
|||||||
className="inline-block w-3 h-3 rounded-sm border border-gray-400 dark:border-gray-500 flex-shrink-0"
|
className="inline-block w-3 h-3 rounded-sm border border-gray-400 dark:border-gray-500 flex-shrink-0"
|
||||||
style={{ backgroundColor: tooltipData.color }}
|
style={{ backgroundColor: tooltipData.color }}
|
||||||
></span>
|
></span>
|
||||||
<span className="font-mono font-semibold">{tooltipData.key}</span>
|
<span className="font-mono font-semibold">{getDisplayColorKey(tooltipData.key, selectedColorSystem)}</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
93
src/utils/colorSystemUtils.ts
Normal file
93
src/utils/colorSystemUtils.ts
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
import { PaletteColor } from './pixelation';
|
||||||
|
import colorSystemMapping from '../app/colorSystemMapping.json';
|
||||||
|
import beadPaletteData from '../app/beadPaletteData.json';
|
||||||
|
|
||||||
|
// 定义色号系统类型并导出
|
||||||
|
export type ColorSystem = 'MARD' | 'COCO' | '漫漫' | '盼盼' | '咪小窝';
|
||||||
|
|
||||||
|
// 色号系统选项
|
||||||
|
export const colorSystemOptions = [
|
||||||
|
{ key: 'MARD', name: 'MARD马德' },
|
||||||
|
{ key: 'COCO', name: 'COCO可可' },
|
||||||
|
{ key: '漫漫', name: '漫漫拼豆' },
|
||||||
|
{ key: '盼盼', name: '盼盼拼豆' },
|
||||||
|
{ key: '咪小窝', name: '咪小窝' },
|
||||||
|
];
|
||||||
|
|
||||||
|
// 类型定义
|
||||||
|
type ColorMapping = Record<string, Record<ColorSystem, string>>;
|
||||||
|
const typedColorSystemMapping = colorSystemMapping as ColorMapping;
|
||||||
|
const typedBeadPaletteData = beadPaletteData as Record<string, string>;
|
||||||
|
|
||||||
|
// 从colorSystemMapping.json加载完整的颜色映射数据
|
||||||
|
export function loadFullColorMapping(): Map<string, any> {
|
||||||
|
const mapping = new Map();
|
||||||
|
Object.entries(colorSystemMapping).forEach(([baseKey, colorData]) => {
|
||||||
|
mapping.set(baseKey, colorData);
|
||||||
|
});
|
||||||
|
return mapping;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将色板转换到指定色号系统
|
||||||
|
export function convertPaletteToColorSystem(
|
||||||
|
palette: PaletteColor[],
|
||||||
|
colorSystem: ColorSystem
|
||||||
|
): PaletteColor[] {
|
||||||
|
return palette.map(color => {
|
||||||
|
const colorMapping = typedColorSystemMapping[color.hex];
|
||||||
|
if (colorMapping && colorMapping[colorSystem]) {
|
||||||
|
return {
|
||||||
|
...color,
|
||||||
|
key: colorMapping[colorSystem]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return color; // 如果找不到映射,保持原样
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取指定色号系统的显示键 - 重新设计的简化版本
|
||||||
|
export function getDisplayColorKey(originalKey: string, colorSystem: ColorSystem): string {
|
||||||
|
// 对于特殊键(如透明键),直接返回原键
|
||||||
|
if (originalKey === 'ERASE' || originalKey.length === 0 || originalKey === '?') {
|
||||||
|
return originalKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果目标色号系统就是MARD,直接返回原键
|
||||||
|
if (colorSystem === 'MARD') {
|
||||||
|
return originalKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1. 通过MARD色号从beadPaletteData获取hex值
|
||||||
|
const hexValue = typedBeadPaletteData[originalKey];
|
||||||
|
if (!hexValue) {
|
||||||
|
return originalKey; // 如果找不到对应的hex值,返回原键
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 通过hex值从colorSystemMapping获取目标色号系统的值
|
||||||
|
const colorMapping = typedColorSystemMapping[hexValue];
|
||||||
|
if (colorMapping && colorMapping[colorSystem]) {
|
||||||
|
return colorMapping[colorSystem];
|
||||||
|
}
|
||||||
|
|
||||||
|
return originalKey; // 如果找不到映射,返回原键
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将色号键转换回基础系统(MARD)
|
||||||
|
export function convertToBaseKey(displayKey: string, colorSystem: ColorSystem): string {
|
||||||
|
if (colorSystem === 'MARD') {
|
||||||
|
return displayKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [hex, mapping] of Object.entries(typedColorSystemMapping)) {
|
||||||
|
if (mapping[colorSystem] === displayKey) {
|
||||||
|
return mapping.MARD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return displayKey; // 如果找不到映射,返回原键
|
||||||
|
}
|
||||||
|
|
||||||
|
// 验证颜色在指定系统中是否有效
|
||||||
|
export function isValidColorInSystem(hexValue: string, colorSystem: ColorSystem): boolean {
|
||||||
|
const mapping = typedColorSystemMapping[hexValue];
|
||||||
|
return mapping && mapping[colorSystem] !== undefined;
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
import { GridDownloadOptions } from '../types/downloadTypes';
|
import { GridDownloadOptions } from '../types/downloadTypes';
|
||||||
import { MappedPixel, PaletteColor } from './pixelation';
|
import { MappedPixel, PaletteColor } from './pixelation';
|
||||||
|
import { getDisplayColorKey, ColorSystem } from './colorSystemUtils';
|
||||||
|
|
||||||
// 用于获取对比色的工具函数 - 从page.tsx复制
|
// 用于获取对比色的工具函数 - 从page.tsx复制
|
||||||
function getContrastColor(hex: string): string {
|
function getContrastColor(hex: string): string {
|
||||||
@@ -53,7 +54,8 @@ export function downloadImage({
|
|||||||
totalBeadCount,
|
totalBeadCount,
|
||||||
options,
|
options,
|
||||||
activeBeadPalette,
|
activeBeadPalette,
|
||||||
selectedPaletteKeySet
|
selectedPaletteKeySet,
|
||||||
|
selectedColorSystem
|
||||||
}: {
|
}: {
|
||||||
mappedPixelData: MappedPixel[][] | null;
|
mappedPixelData: MappedPixel[][] | null;
|
||||||
gridDimensions: { N: number; M: number } | null;
|
gridDimensions: { N: number; M: number } | null;
|
||||||
@@ -62,6 +64,7 @@ export function downloadImage({
|
|||||||
options: GridDownloadOptions;
|
options: GridDownloadOptions;
|
||||||
activeBeadPalette: PaletteColor[];
|
activeBeadPalette: PaletteColor[];
|
||||||
selectedPaletteKeySet: string;
|
selectedPaletteKeySet: string;
|
||||||
|
selectedColorSystem: ColorSystem;
|
||||||
}): void {
|
}): void {
|
||||||
if (!mappedPixelData || !gridDimensions || gridDimensions.N === 0 || gridDimensions.M === 0 || activeBeadPalette.length === 0) {
|
if (!mappedPixelData || !gridDimensions || gridDimensions.N === 0 || gridDimensions.M === 0 || activeBeadPalette.length === 0) {
|
||||||
console.error("下载失败: 映射数据或尺寸无效。");
|
console.error("下载失败: 映射数据或尺寸无效。");
|
||||||
@@ -336,7 +339,7 @@ export function downloadImage({
|
|||||||
if (cellData && !cellData.isExternal) {
|
if (cellData && !cellData.isExternal) {
|
||||||
// 内部单元格:使用珠子颜色填充并绘制文本
|
// 内部单元格:使用珠子颜色填充并绘制文本
|
||||||
const cellColor = cellData.color || '#FFFFFF';
|
const cellColor = cellData.color || '#FFFFFF';
|
||||||
const cellKey = cellData.key || '?';
|
const cellKey = getDisplayColorKey(cellData.key || '?', selectedColorSystem);
|
||||||
|
|
||||||
ctx.fillStyle = cellColor;
|
ctx.fillStyle = cellColor;
|
||||||
ctx.fillRect(drawX, drawY, downloadCellSize, downloadCellSize);
|
ctx.fillRect(drawX, drawY, downloadCellSize, downloadCellSize);
|
||||||
@@ -460,7 +463,7 @@ export function downloadImage({
|
|||||||
// 绘制色号
|
// 绘制色号
|
||||||
ctx.fillStyle = '#333333';
|
ctx.fillStyle = '#333333';
|
||||||
ctx.textAlign = 'left';
|
ctx.textAlign = 'left';
|
||||||
ctx.fillText(key, itemX + swatchSize + 5, rowY);
|
ctx.fillText(getDisplayColorKey(key, selectedColorSystem), itemX + swatchSize + 5, rowY);
|
||||||
|
|
||||||
// 绘制数量 - 在每个项目的右侧
|
// 绘制数量 - 在每个项目的右侧
|
||||||
const countText = `${cellData.count} 颗`;
|
const countText = `${cellData.count} 颗`;
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ export enum PixelationMode {
|
|||||||
Average = 'average', // 真实模式(平均色)
|
Average = 'average', // 真实模式(平均色)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 定义色号系统类型
|
||||||
|
export type ColorSystem = 'MARD' | 'COCO' | '漫漫' | '盼盼' | '咪小窝';
|
||||||
|
|
||||||
// --- 必要的类型定义 ---
|
// --- 必要的类型定义 ---
|
||||||
export interface RgbColor {
|
export interface RgbColor {
|
||||||
r: number;
|
r: number;
|
||||||
|
|||||||
292
色号对应表.csv
Normal file
292
色号对应表.csv
Normal file
@@ -0,0 +1,292 @@
|
|||||||
|
MARD,COCO,漫漫,盼盼,咪小窝
|
||||||
|
A01,E02,E2,65,77
|
||||||
|
A02,E01,B1,2,2
|
||||||
|
A03,E05,B2,28,28
|
||||||
|
A04,E07,B3,3,3
|
||||||
|
A05,D03,B4,74,79
|
||||||
|
A06,D05,B5,29,29
|
||||||
|
A07,D08,B6,4,4
|
||||||
|
A08,E08,B10,88,98
|
||||||
|
A09,D06,B11,90,97
|
||||||
|
A10,D07,B12,89,96
|
||||||
|
A11,D01,E11,100,109
|
||||||
|
A12,K09,A18,99,110
|
||||||
|
A13,D04,B13,131,116
|
||||||
|
A14,C05,B14,138,135
|
||||||
|
A15,E04,B15,150,150
|
||||||
|
A16,E03,IC04,216,216
|
||||||
|
A17,E06,IC9,213,213
|
||||||
|
A18,D02,IC14,223,208
|
||||||
|
A19,K10,IC15,218,218
|
||||||
|
A20,E09,Q6,242,242
|
||||||
|
A21,E10,R07,276,261
|
||||||
|
A22,E11,R06,270,255
|
||||||
|
A23,E12,R08,274,259
|
||||||
|
A24,E13,G3,288,273
|
||||||
|
A25,E14,G4,289,274
|
||||||
|
A26,E15,G5,290,275
|
||||||
|
B01,F05,C1,48,48
|
||||||
|
B02,F08,C2,33,33
|
||||||
|
B03,F04,C7,26,26
|
||||||
|
B04,F09,C3,66,78
|
||||||
|
B05,F10,C4,39,39
|
||||||
|
B06,G04,C9,11,11
|
||||||
|
B07,G05,C10,44,44
|
||||||
|
B08,F11,C5,10,10
|
||||||
|
B09,F16,C6,79,84
|
||||||
|
B10,G03,C11,96,100
|
||||||
|
B11,F14,C12,97,99
|
||||||
|
B12,F12,C13,106,111
|
||||||
|
B13,F02,C14,128,119
|
||||||
|
B14,F06,C15,129,117
|
||||||
|
B15,F15,C16,130,122
|
||||||
|
B16,F03,C17,141,133
|
||||||
|
B17,F13,C18,142,141
|
||||||
|
B18,F07,C19,147,147
|
||||||
|
B19,G06,DH15,191,174
|
||||||
|
B20,G02,DH10,192,175
|
||||||
|
B21,G07,DH2,207,194
|
||||||
|
B22,G08,DH7,206,193
|
||||||
|
B23,F17,DH12,205,192
|
||||||
|
B24,F01,IC5,222,207
|
||||||
|
B25,F18,Q13,240,240
|
||||||
|
B26,F19,Q7,248,248
|
||||||
|
B27,F20,R10,262,262
|
||||||
|
B28,F21,R11,269,254
|
||||||
|
B29,F22,R09,268,253
|
||||||
|
B30,F23,G6,285,270
|
||||||
|
B31,F24,G7,286,271
|
||||||
|
B32,F25,G12,287,272
|
||||||
|
C01,G01,C8,64,76
|
||||||
|
C02,H03,D1,30,30
|
||||||
|
C03,H04,D2,63,75
|
||||||
|
C04,H05,D3,77,82
|
||||||
|
C05,H07,D7,34,34
|
||||||
|
C06,H08,D4,25,25
|
||||||
|
C07,H13,D8,9,9
|
||||||
|
C08,H14,D9,52,71
|
||||||
|
C09,H16,N5,42,42
|
||||||
|
C10,H09,D25,121,130
|
||||||
|
C11,H10,D28,122,113
|
||||||
|
C12,H23,D26,120,120
|
||||||
|
C13,H01,D30,140,142
|
||||||
|
C14,H02,D29,139,136
|
||||||
|
C15,H11,D31,143,132
|
||||||
|
C16,H18,D32,149,149
|
||||||
|
C17,H19,D36,163,156
|
||||||
|
C18,H24,DH6,196,196
|
||||||
|
C19,H12,DH9,202,202
|
||||||
|
C20,H17,DH14,197,197
|
||||||
|
C21,H06,IC3,212,212
|
||||||
|
C22,H25,Q11,239,239
|
||||||
|
C23,H26,R13,263,263
|
||||||
|
C24,H27,R14,267,252
|
||||||
|
C25,H28,R12,271,256
|
||||||
|
C26,H29,R15,265,250
|
||||||
|
C27,H30,G13,279,264
|
||||||
|
C28,H31,G14,280,265
|
||||||
|
C29,H32,G15,281,266
|
||||||
|
D01,J07,D5,46,46
|
||||||
|
D02,J08,D6,36,36
|
||||||
|
D03,H15,D10,8,8
|
||||||
|
D04,H20,D11,75,80
|
||||||
|
D05,J12,D13,32,32
|
||||||
|
D06,J11,D14,27,27
|
||||||
|
D07,J15,D12,7,7
|
||||||
|
D08,J03,D16,94,89
|
||||||
|
D09,J04,D17,93,90
|
||||||
|
D10,J19,D15,92,91
|
||||||
|
D11,J06,D19,105,104
|
||||||
|
D12,J10,D20,104,105
|
||||||
|
D13,J14,D21,103,106
|
||||||
|
D14,J16,D22,102,107
|
||||||
|
D15,H22,D18,101,108
|
||||||
|
D16,J01,D23,118,126
|
||||||
|
D17,J05,D24,119,128
|
||||||
|
D18,J13,D27,124,125
|
||||||
|
D19,J09,D33,153,153
|
||||||
|
D20,J17,D34,161,155
|
||||||
|
D21,J18,D35,162,158
|
||||||
|
D22,H21,DH1,198,198
|
||||||
|
D23,J02,IC8,217,217
|
||||||
|
D24,J20,Q14,244,244
|
||||||
|
D25,J21,Q15,249,234
|
||||||
|
D26,J22,R01,273,258
|
||||||
|
E01,K03,E1,18,18
|
||||||
|
E02,K15,A7,38,38
|
||||||
|
E03,K17,A8,62,74
|
||||||
|
E04,K21,A9,6,6
|
||||||
|
E05,K19,A10,40,40
|
||||||
|
E06,K22,A11,20,20
|
||||||
|
E07,K25,A12,41,41
|
||||||
|
E08,K12,A13,84,103
|
||||||
|
E09,K18,A14,98,95
|
||||||
|
E10,K23,A16,83,94
|
||||||
|
E11,K02,A19,125,131
|
||||||
|
E12,K16,A20,126,112
|
||||||
|
E13,K24,A21,127,124
|
||||||
|
E14,K05,E21,137,140
|
||||||
|
E15,K04,A23,135,139
|
||||||
|
E16,K01,IC2,221,206
|
||||||
|
E17,K11,IC7,220,205
|
||||||
|
E18,K13,IC13,210,210
|
||||||
|
E19,K14,IC12,215,215
|
||||||
|
E20,K26,Q1,241,241
|
||||||
|
E21,K27,Q2,253,238
|
||||||
|
E22,K28,Q4,252,237
|
||||||
|
E23,K29,Q3,250,235
|
||||||
|
E24,K30,G8,282,267
|
||||||
|
F01,K08,A1,35,35
|
||||||
|
F02,C02,A2,31,31
|
||||||
|
F03,C03,A3,53,72
|
||||||
|
F04,C06,A4,54,73
|
||||||
|
F05,C07,A5,5,5
|
||||||
|
F06,Z21,E9,16,16
|
||||||
|
F07,C10,A6,47,47
|
||||||
|
F08,C09,A17,81,92
|
||||||
|
F09,K20,A15,82,93
|
||||||
|
F10,Z20,E15,116,115
|
||||||
|
F11,Z23,E16,117,129
|
||||||
|
F12,C01,A22,136,134
|
||||||
|
F13,C04,A24,148,148
|
||||||
|
F14,K07,A25,154,154
|
||||||
|
F15,C08,DH8,204,191
|
||||||
|
F16,K06,IC10,211,211
|
||||||
|
F17,K31,Q9,245,245
|
||||||
|
F18,K32,Q10,246,246
|
||||||
|
F19,K33,Q05,243,243
|
||||||
|
F20,K34,R04,275,260
|
||||||
|
F21,K35,R03,266,251
|
||||||
|
F22,K36,R02,272,257
|
||||||
|
F23,K37,R05,264,249
|
||||||
|
F24,K38,G9,283,268
|
||||||
|
F25,K39,G10,284,269
|
||||||
|
G01,Z02,E3,76,81
|
||||||
|
G02,Z05,E4,49,49
|
||||||
|
G03,Z06,E5,80,85
|
||||||
|
G04,Z08,E6,19,19
|
||||||
|
G05,Z10,B7,43,43
|
||||||
|
G06,Z11,B8,50,50
|
||||||
|
G07,Z18,E7,17,17
|
||||||
|
G08,Z22,E8,12,12
|
||||||
|
G09,Z09,E10,91,102
|
||||||
|
G10,Z15,B9,87,101
|
||||||
|
G11,Z07,E12,112,118
|
||||||
|
G12,Z13,E13,113,127
|
||||||
|
G13,Z14,E17,115,114
|
||||||
|
G14,Z17,E14,114,123
|
||||||
|
G15,Z03,E19,133,143
|
||||||
|
G16,Z04,E20,134,138
|
||||||
|
G17,Z16,E22,144,137
|
||||||
|
G18,Z01,DH5,203,203
|
||||||
|
G19,Z12,DH3,208,195
|
||||||
|
G20,Z19,DH13,199,199
|
||||||
|
G21,Z24,Q8,247,247
|
||||||
|
H01,A02,F1,15,15
|
||||||
|
H02,A01,F2,1,1
|
||||||
|
H03,B03,F3,13,13
|
||||||
|
H04,B05,F4,78,83
|
||||||
|
H05,B06,F5,45,45
|
||||||
|
H06,B07,F6,51,70
|
||||||
|
H07,B09,F7,14,14
|
||||||
|
H08,A09,F8,85,86
|
||||||
|
H09,A08,F10,95,87
|
||||||
|
H10,A10,F9,86,88
|
||||||
|
H11,B01,F11,123,121
|
||||||
|
H12,A04,E18,132,144
|
||||||
|
H13,A06,E23,145,146
|
||||||
|
H14,B02,F12,146,145
|
||||||
|
H15,B04,DH4,201,201
|
||||||
|
H16,B08,DH11,200,200
|
||||||
|
H17,A07,IC6,214,214
|
||||||
|
H18,A03,IC1,219,204
|
||||||
|
H19,A05,IC11,209,209
|
||||||
|
H20,B10,Q12,251,236
|
||||||
|
H21,A11,G1,291,276
|
||||||
|
H22,A12,G2,277,277
|
||||||
|
H23,B11,G11,278,278
|
||||||
|
M01,Y01,YX11,168,168
|
||||||
|
M02,Y02,YX12,172,172
|
||||||
|
M03,Y03,YX2,166,166
|
||||||
|
M04,Y04,YX15,167,167
|
||||||
|
M05,Y05,YX6,174,159
|
||||||
|
M06,Y06,YX1,169,169
|
||||||
|
M07,Y07,YX13,171,171
|
||||||
|
M08,Y08,YX14,177,162
|
||||||
|
M09,Y09,YX10,170,170
|
||||||
|
M10,Y10,YX9,164,164
|
||||||
|
M11,Y11,YX4,176,161
|
||||||
|
M12,Y12,YX5,173,173
|
||||||
|
M13,Y13,YX8,175,160
|
||||||
|
M14,Y14,YX3,165,165
|
||||||
|
M15,Y15,YX7,178,163
|
||||||
|
P01,M01,P1,71,62
|
||||||
|
P02,M02,P2,55,69
|
||||||
|
P03,M03,P4,73,66
|
||||||
|
P04,M04,P5,72,64
|
||||||
|
P05,M05,P3,56/56,63
|
||||||
|
P06,M06,P8,157/70,65
|
||||||
|
P07,M07,P6,159/68,68
|
||||||
|
P08,M08,P7,158/67,67
|
||||||
|
P09,M09,P13,195,178
|
||||||
|
P10,M10,P18,187,187
|
||||||
|
P11,M11,P9,185,185
|
||||||
|
P12,M12,P12,190,190
|
||||||
|
P13,M13,P17,193,176
|
||||||
|
P14,M14,P22,183,183
|
||||||
|
P15,M15,P23,184,184
|
||||||
|
P16,M16,P14,182,182
|
||||||
|
P17,M17,P19,179,179
|
||||||
|
P18,M18,P11,194,177
|
||||||
|
P19,M19,P10,186,186
|
||||||
|
P20,M21,P15,188,180
|
||||||
|
P21,M20,P20,180,188
|
||||||
|
P22,M22,P16,189,189
|
||||||
|
P23,M23,P21,181,181
|
||||||
|
Q01,W3,W3,109,W3
|
||||||
|
Q02,W4,W4,111,W4
|
||||||
|
Q03,W1,W1,107,W1
|
||||||
|
Q04,W2,W2,110,W2
|
||||||
|
Q05,W5,W5,108,W5
|
||||||
|
R01,L01,T1,67,52
|
||||||
|
R02,L02,N1,24,24
|
||||||
|
R03,L03,N2,22,22
|
||||||
|
R04,L04,N3,21,21
|
||||||
|
R05,L05,N4,23,23
|
||||||
|
R06,L06,T4,69,55
|
||||||
|
R07,L07,T5,37,37
|
||||||
|
R08,L08,T3,68,54
|
||||||
|
R09,L09,T2,70,56
|
||||||
|
R10,L10,L2,156,53
|
||||||
|
R11,L11,T6,151,151
|
||||||
|
R12,L12,T7,160,157
|
||||||
|
R13,L13,-,152,152
|
||||||
|
R14,S1,S1,231,231
|
||||||
|
R15,S2,S2,237,224
|
||||||
|
R16,S3,S3,238,225
|
||||||
|
R17,S4,S5,233,233
|
||||||
|
R18,S5,S4,235,222
|
||||||
|
R19,S6,S11,227,227
|
||||||
|
R20,S7,S6,230,230
|
||||||
|
R21,S8,S13,234,221
|
||||||
|
R22,S9,S15,226,226
|
||||||
|
R23,S10,S12,224,219
|
||||||
|
R24,S11,S4,228,228
|
||||||
|
R25,S12,S14,225,220
|
||||||
|
R26,S13,S9,229,229
|
||||||
|
R27,S14,S8,232,232
|
||||||
|
R28,S15,S10,236,223
|
||||||
|
T01,L14,L6,155,51
|
||||||
|
Y01,N01,Y1,59,59
|
||||||
|
Y02,N02,Y2,60,60
|
||||||
|
Y03,N03,Y3,57,57
|
||||||
|
Y04,N04,Y4,58,58
|
||||||
|
Y05,N05,Y5,61,61
|
||||||
|
ZG1,GB1,ZG1,254,ZG1
|
||||||
|
ZG2,GB2,ZG2,255,ZG2
|
||||||
|
ZG3,GB3,ZG3,256,ZG3
|
||||||
|
ZG4,GB4,ZG4,257,ZG4
|
||||||
|
ZG5,GB5,ZG5,258,ZG5
|
||||||
|
ZG6,GB6,ZG6,259,ZG6
|
||||||
|
ZG7,GB7,ZG7,260,ZG7
|
||||||
|
ZG8,GB8,ZG8,261,ZG8
|
||||||
|
Reference in New Issue
Block a user