def extend_color(self, color_data, palette): """ :param color_data: :param palette: :return: palette, data_index """ color_set = set() for color in color_data: color_set.add(color) if palette.can_extend(color_set): return palette, palette.extend(color_data) for pal in self._palettes: if pal is palette: continue if pal.can_extend(color_set): return pal, pal.extend(color_data) palette = Palette(self, 'palette_%d' % (len(self._palettes) + 1), []) self.add_palette(palette) if palette.can_extend(color_set, 65536): return palette, palette.extend(color_data) assert False