| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| TPalette *createStandardCleanupPalette() |
| { |
| TPalette *palette = new TPalette(); |
| TPalette::Page *page = palette->getPage(0); |
| page->removeStyle(1); |
| TBlackCleanupStyle *black = new TBlackCleanupStyle(); |
| palette->setStyle(1, black); |
| page->addStyle(1); |
| |
| |
| black->setName(L"color_1"); |
| palette->addRef(); |
| palette->setIsCleanupPalette(true); |
| return palette; |
| } |
| |
| |
| |
| TPalette *createToonzPalette(TPalette *cleanupPalette) |
| { |
| assert(cleanupPalette); |
| assert(cleanupPalette->isCleanupPalette()); |
| |
| TPalette *palette = new TPalette(); |
| |
| for (int i = 0; i < cleanupPalette->getPage(0)->getStyleCount(); i++) { |
| int styleId = cleanupPalette->getPage(0)->getStyleId(i); |
| TCleanupStyle *cs = |
| dynamic_cast<TCleanupStyle *>( |
| cleanupPalette->getStyle(styleId)); |
| if (!cs) |
| continue; |
| TPixel32 color = cs->getMainColor(); |
| |
| while (palette->getStyleCount() < styleId) |
| palette->addStyle(TPixel32::Red); |
| |
| if (styleId == palette->getStyleCount()) |
| palette->addStyle(color); |
| else |
| palette->setStyle(styleId, color); |
| |
| if (styleId > 1) |
| palette->getPage(0)->addStyle(styleId); |
| |
| assert(0 <= styleId && styleId < palette->getStyleCount()); |
| if (cs->getFlags()) |
| palette->getStyle(styleId)->setFlags(cs->getFlags()); |
| } |
| |
| return palette; |
| } |
| |
| |
| |
| TPalette *createToonzPalette(TPalette *cleanupPalette, int colorParamIndex) |
| { |
| assert(cleanupPalette); |
| assert(cleanupPalette->isCleanupPalette()); |
| |
| TPalette *palette = new TPalette(); |
| |
| for (int i = 0; i < cleanupPalette->getPage(0)->getStyleCount(); i++) { |
| int styleId = cleanupPalette->getPage(0)->getStyleId(i); |
| TCleanupStyle *cs = |
| dynamic_cast<TCleanupStyle *>( |
| cleanupPalette->getStyle(styleId)); |
| if (!cs) |
| continue; |
| TPixel32 color = cs->getColorParamValue(colorParamIndex); |
| |
| while (palette->getStyleCount() < styleId) |
| palette->addStyle(TPixel32::Red); |
| |
| if (styleId == palette->getStyleCount()) |
| palette->addStyle(color); |
| else |
| palette->setStyle(styleId, color); |
| |
| if (styleId > 1) |
| palette->getPage(0)->addStyle(styleId); |
| |
| assert(0 <= styleId && styleId < palette->getStyleCount()); |
| if (cs->getFlags()) |
| palette->getStyle(styleId)->setFlags(cs->getFlags()); |
| } |
| |
| return palette; |
| } |
| |
| |
| |
| void TargetColors::update(TPalette *palette, bool noAntialias) |
| { |
| m_colors.clear(); |
| |
| TargetColor tranparent( |
| TPixel32(255, 255, 255, 0) , |
| 0, |
| 0, |
| 0, |
| 0, |
| 0); |
| |
| m_colors.push_back(tranparent); |
| |
| for (int i = 0; i < palette->getPage(0)->getStyleCount(); i++) { |
| int styleId = palette->getPage(0)->getStyleId(i); |
| TColorStyle *cs = palette->getStyle(styleId); |
| if (!cs) |
| continue; |
| if (TBlackCleanupStyle *blackStyle = dynamic_cast<TBlackCleanupStyle *>(cs)) { |
| TargetColor tc( |
| blackStyle->getMainColor(), |
| styleId, |
| (int)blackStyle->getBrightness(), |
| noAntialias ? 100 : (int)blackStyle->getContrast(), |
| blackStyle->getColorThreshold(), |
| blackStyle->getWhiteThreshold()); |
| m_colors.push_back(tc); |
| } else if (TColorCleanupStyle *colorStyle = dynamic_cast<TColorCleanupStyle *>(cs)) { |
| TargetColor tc( |
| colorStyle->getMainColor(), |
| styleId, |
| (int)colorStyle->getBrightness(), |
| noAntialias ? 100 : (int)colorStyle->getContrast(), |
| colorStyle->getHRange(), |
| colorStyle->getLineWidth()); |
| m_colors.push_back(tc); |
| } |
| } |
| } |
| |
| |
| |
| void convertToCleanupPalette(TPalette *palette) |
| { |
| if (palette->isCleanupPalette()) |
| return; |
| for (int i = 1; i < palette->getStyleCount(); i++) { |
| TColorStyle *cs = palette->getStyle(i); |
| TPixel32 color = cs->getMainColor(); |
| TColorStyle *ccs = 0; |
| if (i == 1) |
| ccs = new TBlackCleanupStyle(); |
| else |
| ccs = new TColorCleanupStyle(color); |
| palette->setStyle(i, ccs); |
| } |
| palette->setIsCleanupPalette(true); |
| } |
| |
| |
| |
| void convertToLevelPalette(TPalette *palette) |
| { |
| if (!palette->isCleanupPalette()) |
| return; |
| for (int i = 1; i < palette->getStyleCount(); i++) { |
| TPixel32 color = palette->getStyle(i)->getMainColor(); |
| palette->setStyle(i, color); |
| } |
| palette->setIsCleanupPalette(false); |
| } |
| |