| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) |
| 4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> | 4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> |
| 5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
| 6 * | 6 * |
| 7 * Redistribution and use in source and binary forms, with or without | 7 * Redistribution and use in source and binary forms, with or without |
| 8 * modification, are permitted provided that the following conditions | 8 * modification, are permitted provided that the following conditions |
| 9 * are met: | 9 * are met: |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 #include "GraphicsContext.h" | 36 #include "GraphicsContext.h" |
| 37 #include "HTMLCanvasElement.h" | 37 #include "HTMLCanvasElement.h" |
| 38 #include "StylePropertySet.h" | 38 #include "StylePropertySet.h" |
| 39 #include <wtf/Assertions.h> | 39 #include <wtf/Assertions.h> |
| 40 #include <wtf/PassRefPtr.h> | 40 #include <wtf/PassRefPtr.h> |
| 41 | 41 |
| 42 #if USE(CG) | 42 #if USE(CG) |
| 43 #include <CoreGraphics/CGContext.h> | 43 #include <CoreGraphics/CGContext.h> |
| 44 #endif | 44 #endif |
| 45 | 45 |
| 46 #if PLATFORM(QT) | |
| 47 #include <QPainter> | |
| 48 #include <QBrush> | |
| 49 #include <QPen> | |
| 50 #include <QColor> | |
| 51 #endif | |
| 52 | |
| 53 namespace WebCore { | 46 namespace WebCore { |
| 54 | 47 |
| 55 enum ColorParseResult { ParsedRGBA, ParsedCurrentColor, ParsedSystemColor, Parse
Failed }; | 48 enum ColorParseResult { ParsedRGBA, ParsedCurrentColor, ParsedSystemColor, Parse
Failed }; |
| 56 | 49 |
| 57 static ColorParseResult parseColor(RGBA32& parsedColor, const String& colorStrin
g, Document* document = 0) | 50 static ColorParseResult parseColor(RGBA32& parsedColor, const String& colorStrin
g, Document* document = 0) |
| 58 { | 51 { |
| 59 if (equalIgnoringCase(colorString, "currentcolor")) | 52 if (equalIgnoringCase(colorString, "currentcolor")) |
| 60 return ParsedCurrentColor; | 53 return ParsedCurrentColor; |
| 61 if (CSSParser::parseColor(parsedColor, colorString)) | 54 if (CSSParser::parseColor(parsedColor, colorString)) |
| 62 return ParsedRGBA; | 55 return ParsedRGBA; |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 return; | 227 return; |
| 235 switch (m_type) { | 228 switch (m_type) { |
| 236 case RGBA: | 229 case RGBA: |
| 237 context->setStrokeColor(m_rgba, ColorSpaceDeviceRGB); | 230 context->setStrokeColor(m_rgba, ColorSpaceDeviceRGB); |
| 238 break; | 231 break; |
| 239 case CMYKA: { | 232 case CMYKA: { |
| 240 // FIXME: Do this through platform-independent GraphicsContext API. | 233 // FIXME: Do this through platform-independent GraphicsContext API. |
| 241 // We'll need a fancier Color abstraction to support CMYKA correctly | 234 // We'll need a fancier Color abstraction to support CMYKA correctly |
| 242 #if USE(CG) | 235 #if USE(CG) |
| 243 CGContextSetCMYKStrokeColor(context->platformContext(), m_cmyka.c, m_cmy
ka.m, m_cmyka.y, m_cmyka.k, m_cmyka.a); | 236 CGContextSetCMYKStrokeColor(context->platformContext(), m_cmyka.c, m_cmy
ka.m, m_cmyka.y, m_cmyka.k, m_cmyka.a); |
| 244 #elif PLATFORM(QT) | |
| 245 QPen currentPen = context->platformContext()->pen(); | |
| 246 QColor clr; | |
| 247 clr.setCmykF(m_cmyka.c, m_cmyka.m, m_cmyka.y, m_cmyka.k, m_cmyka.a); | |
| 248 currentPen.setColor(clr); | |
| 249 context->platformContext()->setPen(currentPen); | |
| 250 #else | 237 #else |
| 251 context->setStrokeColor(m_rgba, ColorSpaceDeviceRGB); | 238 context->setStrokeColor(m_rgba, ColorSpaceDeviceRGB); |
| 252 #endif | 239 #endif |
| 253 break; | 240 break; |
| 254 } | 241 } |
| 255 case Gradient: | 242 case Gradient: |
| 256 context->setStrokeGradient(canvasGradient()->gradient()); | 243 context->setStrokeGradient(canvasGradient()->gradient()); |
| 257 break; | 244 break; |
| 258 case ImagePattern: | 245 case ImagePattern: |
| 259 context->setStrokePattern(canvasPattern()->pattern()); | 246 context->setStrokePattern(canvasPattern()->pattern()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 271 return; | 258 return; |
| 272 switch (m_type) { | 259 switch (m_type) { |
| 273 case RGBA: | 260 case RGBA: |
| 274 context->setFillColor(m_rgba, ColorSpaceDeviceRGB); | 261 context->setFillColor(m_rgba, ColorSpaceDeviceRGB); |
| 275 break; | 262 break; |
| 276 case CMYKA: { | 263 case CMYKA: { |
| 277 // FIXME: Do this through platform-independent GraphicsContext API. | 264 // FIXME: Do this through platform-independent GraphicsContext API. |
| 278 // We'll need a fancier Color abstraction to support CMYKA correctly | 265 // We'll need a fancier Color abstraction to support CMYKA correctly |
| 279 #if USE(CG) | 266 #if USE(CG) |
| 280 CGContextSetCMYKFillColor(context->platformContext(), m_cmyka.c, m_cmyka
.m, m_cmyka.y, m_cmyka.k, m_cmyka.a); | 267 CGContextSetCMYKFillColor(context->platformContext(), m_cmyka.c, m_cmyka
.m, m_cmyka.y, m_cmyka.k, m_cmyka.a); |
| 281 #elif PLATFORM(QT) | |
| 282 QBrush currentBrush = context->platformContext()->brush(); | |
| 283 QColor clr; | |
| 284 clr.setCmykF(m_cmyka.c, m_cmyka.m, m_cmyka.y, m_cmyka.k, m_cmyka.a); | |
| 285 currentBrush.setColor(clr); | |
| 286 context->platformContext()->setBrush(currentBrush); | |
| 287 #else | 268 #else |
| 288 context->setFillColor(m_rgba, ColorSpaceDeviceRGB); | 269 context->setFillColor(m_rgba, ColorSpaceDeviceRGB); |
| 289 #endif | 270 #endif |
| 290 break; | 271 break; |
| 291 } | 272 } |
| 292 case Gradient: | 273 case Gradient: |
| 293 context->setFillGradient(canvasGradient()->gradient()); | 274 context->setFillGradient(canvasGradient()->gradient()); |
| 294 break; | 275 break; |
| 295 case ImagePattern: | 276 case ImagePattern: |
| 296 context->setFillPattern(canvasPattern()->pattern()); | 277 context->setFillPattern(canvasPattern()->pattern()); |
| 297 break; | 278 break; |
| 298 case CurrentColor: | 279 case CurrentColor: |
| 299 case CurrentColorWithOverrideAlpha: | 280 case CurrentColorWithOverrideAlpha: |
| 300 ASSERT_NOT_REACHED(); | 281 ASSERT_NOT_REACHED(); |
| 301 break; | 282 break; |
| 302 } | 283 } |
| 303 } | 284 } |
| 304 | 285 |
| 305 } | 286 } |
| OLD | NEW |