新增色号系统选择功能,优化调色板和网格工具提示的显示逻辑,确保在不同色号系统下正确显示颜色键。同时,重构相关组件以支持新功能,提升用户体验和代码可读性。

This commit is contained in:
zihanjian
2025-05-25 01:01:52 +08:00
parent c4575cdd6a
commit fa196d65cc
9 changed files with 811 additions and 32 deletions

View 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" }
}

View File

@@ -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>

View File

@@ -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 && (

View File

@@ -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>

View File

@@ -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>
); );
}; };

View 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;
}

View File

@@ -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}`;

View File

@@ -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
View 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
1 MARD COCO 漫漫 盼盼 咪小窝
2 A01 E02 E2 65 77
3 A02 E01 B1 2 2
4 A03 E05 B2 28 28
5 A04 E07 B3 3 3
6 A05 D03 B4 74 79
7 A06 D05 B5 29 29
8 A07 D08 B6 4 4
9 A08 E08 B10 88 98
10 A09 D06 B11 90 97
11 A10 D07 B12 89 96
12 A11 D01 E11 100 109
13 A12 K09 A18 99 110
14 A13 D04 B13 131 116
15 A14 C05 B14 138 135
16 A15 E04 B15 150 150
17 A16 E03 IC04 216 216
18 A17 E06 IC9 213 213
19 A18 D02 IC14 223 208
20 A19 K10 IC15 218 218
21 A20 E09 Q6 242 242
22 A21 E10 R07 276 261
23 A22 E11 R06 270 255
24 A23 E12 R08 274 259
25 A24 E13 G3 288 273
26 A25 E14 G4 289 274
27 A26 E15 G5 290 275
28 B01 F05 C1 48 48
29 B02 F08 C2 33 33
30 B03 F04 C7 26 26
31 B04 F09 C3 66 78
32 B05 F10 C4 39 39
33 B06 G04 C9 11 11
34 B07 G05 C10 44 44
35 B08 F11 C5 10 10
36 B09 F16 C6 79 84
37 B10 G03 C11 96 100
38 B11 F14 C12 97 99
39 B12 F12 C13 106 111
40 B13 F02 C14 128 119
41 B14 F06 C15 129 117
42 B15 F15 C16 130 122
43 B16 F03 C17 141 133
44 B17 F13 C18 142 141
45 B18 F07 C19 147 147
46 B19 G06 DH15 191 174
47 B20 G02 DH10 192 175
48 B21 G07 DH2 207 194
49 B22 G08 DH7 206 193
50 B23 F17 DH12 205 192
51 B24 F01 IC5 222 207
52 B25 F18 Q13 240 240
53 B26 F19 Q7 248 248
54 B27 F20 R10 262 262
55 B28 F21 R11 269 254
56 B29 F22 R09 268 253
57 B30 F23 G6 285 270
58 B31 F24 G7 286 271
59 B32 F25 G12 287 272
60 C01 G01 C8 64 76
61 C02 H03 D1 30 30
62 C03 H04 D2 63 75
63 C04 H05 D3 77 82
64 C05 H07 D7 34 34
65 C06 H08 D4 25 25
66 C07 H13 D8 9 9
67 C08 H14 D9 52 71
68 C09 H16 N5 42 42
69 C10 H09 D25 121 130
70 C11 H10 D28 122 113
71 C12 H23 D26 120 120
72 C13 H01 D30 140 142
73 C14 H02 D29 139 136
74 C15 H11 D31 143 132
75 C16 H18 D32 149 149
76 C17 H19 D36 163 156
77 C18 H24 DH6 196 196
78 C19 H12 DH9 202 202
79 C20 H17 DH14 197 197
80 C21 H06 IC3 212 212
81 C22 H25 Q11 239 239
82 C23 H26 R13 263 263
83 C24 H27 R14 267 252
84 C25 H28 R12 271 256
85 C26 H29 R15 265 250
86 C27 H30 G13 279 264
87 C28 H31 G14 280 265
88 C29 H32 G15 281 266
89 D01 J07 D5 46 46
90 D02 J08 D6 36 36
91 D03 H15 D10 8 8
92 D04 H20 D11 75 80
93 D05 J12 D13 32 32
94 D06 J11 D14 27 27
95 D07 J15 D12 7 7
96 D08 J03 D16 94 89
97 D09 J04 D17 93 90
98 D10 J19 D15 92 91
99 D11 J06 D19 105 104
100 D12 J10 D20 104 105
101 D13 J14 D21 103 106
102 D14 J16 D22 102 107
103 D15 H22 D18 101 108
104 D16 J01 D23 118 126
105 D17 J05 D24 119 128
106 D18 J13 D27 124 125
107 D19 J09 D33 153 153
108 D20 J17 D34 161 155
109 D21 J18 D35 162 158
110 D22 H21 DH1 198 198
111 D23 J02 IC8 217 217
112 D24 J20 Q14 244 244
113 D25 J21 Q15 249 234
114 D26 J22 R01 273 258
115 E01 K03 E1 18 18
116 E02 K15 A7 38 38
117 E03 K17 A8 62 74
118 E04 K21 A9 6 6
119 E05 K19 A10 40 40
120 E06 K22 A11 20 20
121 E07 K25 A12 41 41
122 E08 K12 A13 84 103
123 E09 K18 A14 98 95
124 E10 K23 A16 83 94
125 E11 K02 A19 125 131
126 E12 K16 A20 126 112
127 E13 K24 A21 127 124
128 E14 K05 E21 137 140
129 E15 K04 A23 135 139
130 E16 K01 IC2 221 206
131 E17 K11 IC7 220 205
132 E18 K13 IC13 210 210
133 E19 K14 IC12 215 215
134 E20 K26 Q1 241 241
135 E21 K27 Q2 253 238
136 E22 K28 Q4 252 237
137 E23 K29 Q3 250 235
138 E24 K30 G8 282 267
139 F01 K08 A1 35 35
140 F02 C02 A2 31 31
141 F03 C03 A3 53 72
142 F04 C06 A4 54 73
143 F05 C07 A5 5 5
144 F06 Z21 E9 16 16
145 F07 C10 A6 47 47
146 F08 C09 A17 81 92
147 F09 K20 A15 82 93
148 F10 Z20 E15 116 115
149 F11 Z23 E16 117 129
150 F12 C01 A22 136 134
151 F13 C04 A24 148 148
152 F14 K07 A25 154 154
153 F15 C08 DH8 204 191
154 F16 K06 IC10 211 211
155 F17 K31 Q9 245 245
156 F18 K32 Q10 246 246
157 F19 K33 Q05 243 243
158 F20 K34 R04 275 260
159 F21 K35 R03 266 251
160 F22 K36 R02 272 257
161 F23 K37 R05 264 249
162 F24 K38 G9 283 268
163 F25 K39 G10 284 269
164 G01 Z02 E3 76 81
165 G02 Z05 E4 49 49
166 G03 Z06 E5 80 85
167 G04 Z08 E6 19 19
168 G05 Z10 B7 43 43
169 G06 Z11 B8 50 50
170 G07 Z18 E7 17 17
171 G08 Z22 E8 12 12
172 G09 Z09 E10 91 102
173 G10 Z15 B9 87 101
174 G11 Z07 E12 112 118
175 G12 Z13 E13 113 127
176 G13 Z14 E17 115 114
177 G14 Z17 E14 114 123
178 G15 Z03 E19 133 143
179 G16 Z04 E20 134 138
180 G17 Z16 E22 144 137
181 G18 Z01 DH5 203 203
182 G19 Z12 DH3 208 195
183 G20 Z19 DH13 199 199
184 G21 Z24 Q8 247 247
185 H01 A02 F1 15 15
186 H02 A01 F2 1 1
187 H03 B03 F3 13 13
188 H04 B05 F4 78 83
189 H05 B06 F5 45 45
190 H06 B07 F6 51 70
191 H07 B09 F7 14 14
192 H08 A09 F8 85 86
193 H09 A08 F10 95 87
194 H10 A10 F9 86 88
195 H11 B01 F11 123 121
196 H12 A04 E18 132 144
197 H13 A06 E23 145 146
198 H14 B02 F12 146 145
199 H15 B04 DH4 201 201
200 H16 B08 DH11 200 200
201 H17 A07 IC6 214 214
202 H18 A03 IC1 219 204
203 H19 A05 IC11 209 209
204 H20 B10 Q12 251 236
205 H21 A11 G1 291 276
206 H22 A12 G2 277 277
207 H23 B11 G11 278 278
208 M01 Y01 YX11 168 168
209 M02 Y02 YX12 172 172
210 M03 Y03 YX2 166 166
211 M04 Y04 YX15 167 167
212 M05 Y05 YX6 174 159
213 M06 Y06 YX1 169 169
214 M07 Y07 YX13 171 171
215 M08 Y08 YX14 177 162
216 M09 Y09 YX10 170 170
217 M10 Y10 YX9 164 164
218 M11 Y11 YX4 176 161
219 M12 Y12 YX5 173 173
220 M13 Y13 YX8 175 160
221 M14 Y14 YX3 165 165
222 M15 Y15 YX7 178 163
223 P01 M01 P1 71 62
224 P02 M02 P2 55 69
225 P03 M03 P4 73 66
226 P04 M04 P5 72 64
227 P05 M05 P3 56/56 63
228 P06 M06 P8 157/70 65
229 P07 M07 P6 159/68 68
230 P08 M08 P7 158/67 67
231 P09 M09 P13 195 178
232 P10 M10 P18 187 187
233 P11 M11 P9 185 185
234 P12 M12 P12 190 190
235 P13 M13 P17 193 176
236 P14 M14 P22 183 183
237 P15 M15 P23 184 184
238 P16 M16 P14 182 182
239 P17 M17 P19 179 179
240 P18 M18 P11 194 177
241 P19 M19 P10 186 186
242 P20 M21 P15 188 180
243 P21 M20 P20 180 188
244 P22 M22 P16 189 189
245 P23 M23 P21 181 181
246 Q01 W3 W3 109 W3
247 Q02 W4 W4 111 W4
248 Q03 W1 W1 107 W1
249 Q04 W2 W2 110 W2
250 Q05 W5 W5 108 W5
251 R01 L01 T1 67 52
252 R02 L02 N1 24 24
253 R03 L03 N2 22 22
254 R04 L04 N3 21 21
255 R05 L05 N4 23 23
256 R06 L06 T4 69 55
257 R07 L07 T5 37 37
258 R08 L08 T3 68 54
259 R09 L09 T2 70 56
260 R10 L10 L2 156 53
261 R11 L11 T6 151 151
262 R12 L12 T7 160 157
263 R13 L13 - 152 152
264 R14 S1 S1 231 231
265 R15 S2 S2 237 224
266 R16 S3 S3 238 225
267 R17 S4 S5 233 233
268 R18 S5 S4 235 222
269 R19 S6 S11 227 227
270 R20 S7 S6 230 230
271 R21 S8 S13 234 221
272 R22 S9 S15 226 226
273 R23 S10 S12 224 219
274 R24 S11 S4 228 228
275 R25 S12 S14 225 220
276 R26 S13 S9 229 229
277 R27 S14 S8 232 232
278 R28 S15 S10 236 223
279 T01 L14 L6 155 51
280 Y01 N01 Y1 59 59
281 Y02 N02 Y2 60 60
282 Y03 N03 Y3 57 57
283 Y04 N04 Y4 58 58
284 Y05 N05 Y5 61 61
285 ZG1 GB1 ZG1 254 ZG1
286 ZG2 GB2 ZG2 255 ZG2
287 ZG3 GB3 ZG3 256 ZG3
288 ZG4 GB4 ZG4 257 ZG4
289 ZG5 GB5 ZG5 258 ZG5
290 ZG6 GB6 ZG6 259 ZG6
291 ZG7 GB7 ZG7 260 ZG7
292 ZG8 GB8 ZG8 261 ZG8