void CanvasStyle::applyFillColor(GraphicsContext* context) { if (!context) return; switch (m_type) { case RGBA: context->setFillColor(m_rgba); break; case CMYKA: { // FIXME: Do this through platform-independent GraphicsContext API. // We'll need a fancier Color abstraction to support CMYKA correctly context->setFillColor(m_rgba); break; } case Gradient: context->setFillGradient(canvasGradient()->gradient()); break; case ImagePattern: context->setFillPattern(canvasPattern()->pattern()); break; case CurrentColor: case CurrentColorWithOverrideAlpha: ASSERT_NOT_REACHED(); break; } }
void CanvasStyle::applyStrokeColor(GraphicsContext* context) { if (!context) return; switch (m_type) { case ColorString: { Color c = Color(m_color); if (c.isValid()) { context->setStrokeColor(c.rgb(), DeviceColorSpace); break; } RGBA32 color = 0; // default is transparent black if (CSSParser::parseColor(color, m_color)) context->setStrokeColor(color, DeviceColorSpace); break; } case ColorStringWithAlpha: { Color c = Color(m_color); if (c.isValid()) { context->setStrokeColor(colorWithOverrideAlpha(c.rgb(), m_alpha), DeviceColorSpace); break; } RGBA32 color = 0; // default is transparent black if (CSSParser::parseColor(color, m_color)) context->setStrokeColor(colorWithOverrideAlpha(color, m_alpha), DeviceColorSpace); break; } case GrayLevel: // We're only supporting 255 levels of gray here. Since this isn't // even part of HTML5, I don't expect anyone will care. If they do // we'll make a fancier Color abstraction. context->setStrokeColor(Color(m_grayLevel, m_grayLevel, m_grayLevel, m_alpha), DeviceColorSpace); break; case RGBA: context->setStrokeColor(Color(m_red, m_green, m_blue, m_alpha), DeviceColorSpace); break; case CMYKA: { // FIXME: Do this through platform-independent GraphicsContext API. // We'll need a fancier Color abstraction to support CYMKA correctly #if PLATFORM(CG) CGContextSetCMYKStrokeColor(context->platformContext(), m_cyan, m_magenta, m_yellow, m_black, m_alpha); #elif PLATFORM(QT) QPen currentPen = context->platformContext()->pen(); QColor clr; clr.setCmykF(m_cyan, m_magenta, m_yellow, m_black, m_alpha); currentPen.setColor(clr); context->platformContext()->setPen(currentPen); #else context->setStrokeColor(Color(m_cyan, m_magenta, m_yellow, m_black, m_alpha), DeviceColorSpace); #endif break; } case Gradient: context->setStrokeGradient(canvasGradient()->gradient()); break; case ImagePattern: context->setStrokePattern(canvasPattern()->pattern()); break; } }
void CanvasStyle::applyFillColor(GraphicsContext* context) const { if (!context) return; switch (m_type) { case RGBA: context->setFillColor(m_rgba, ColorSpaceDeviceRGB); break; case CMYKA: { // FIXME: Do this through platform-independent GraphicsContext API. // We'll need a fancier Color abstraction to support CMYKA correctly #if USE(CG) CGContextSetCMYKFillColor(context->platformContext(), m_cmyka->c, m_cmyka->m, m_cmyka->y, m_cmyka->k, m_cmyka->a); #else context->setFillColor(m_cmyka->rgba, ColorSpaceDeviceRGB); #endif break; } case Gradient: context->setFillGradient(canvasGradient()->gradient()); break; case ImagePattern: context->setFillPattern(canvasPattern()->pattern()); break; case CurrentColor: case CurrentColorWithOverrideAlpha: case Invalid: ASSERT_NOT_REACHED(); break; } }
void CanvasStyle::applyFillColor(GraphicsContext* context) { if (!context) return; switch (m_type) { case RGBA: context->setFillColor(m_rgba, ColorSpaceDeviceRGB); break; case CMYKA: { // FIXME: Do this through platform-independent GraphicsContext API. // We'll need a fancier Color abstraction to support CMYKA correctly #if PLATFORM(CG) CGContextSetCMYKFillColor(context->platformContext(), m_cmyka.c, m_cmyka.m, m_cmyka.y, m_cmyka.k, m_cmyka.a); #elif PLATFORM(QT) QBrush currentBrush = context->platformContext()->brush(); QColor clr; clr.setCmykF(m_cmyka.c, m_cmyka.m, m_cmyka.y, m_cmyka.k, m_cmyka.a); currentBrush.setColor(clr); context->platformContext()->setBrush(currentBrush); #else context->setFillColor(m_rgba, ColorSpaceDeviceRGB); #endif break; } case Gradient: context->setFillGradient(canvasGradient()->gradient()); break; case ImagePattern: context->setFillPattern(canvasPattern()->pattern()); break; case CurrentColor: case CurrentColorWithOverrideAlpha: ASSERT_NOT_REACHED(); break; } }