| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "skia/ext/vector_platform_device_emf_win.h" | 5 #include "skia/ext/vector_platform_device_emf_win.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 | 194 |
| 195 // Draw the calculated path. | 195 // Draw the calculated path. |
| 196 drawPath(draw, path_modified, paint_no_effet); | 196 drawPath(draw, path_modified, paint_no_effet); |
| 197 return; | 197 return; |
| 198 } | 198 } |
| 199 | 199 |
| 200 if (!ApplyPaint(paint)) { | 200 if (!ApplyPaint(paint)) { |
| 201 return; | 201 return; |
| 202 } | 202 } |
| 203 HDC dc = BeginPlatformPaint(); | 203 HDC dc = BeginPlatformPaint(); |
| 204 if (!Rectangle(dc, SkScalarRound(rect.fLeft), | 204 if (!Rectangle(dc, SkScalarRoundToInt(rect.fLeft), |
| 205 SkScalarRound(rect.fTop), | 205 SkScalarRoundToInt(rect.fTop), |
| 206 SkScalarRound(rect.fRight), | 206 SkScalarRoundToInt(rect.fRight), |
| 207 SkScalarRound(rect.fBottom))) { | 207 SkScalarRoundToInt(rect.fBottom))) { |
| 208 SkASSERT(false); | 208 SkASSERT(false); |
| 209 } | 209 } |
| 210 EndPlatformPaint(); | 210 EndPlatformPaint(); |
| 211 Cleanup(); | 211 Cleanup(); |
| 212 } | 212 } |
| 213 | 213 |
| 214 void VectorPlatformDeviceEmf::drawRRect(const SkDraw& draw, const SkRRect& rr, | 214 void VectorPlatformDeviceEmf::drawRRect(const SkDraw& draw, const SkRRect& rr, |
| 215 const SkPaint& paint) { | 215 const SkPaint& paint) { |
| 216 SkPath path; | 216 SkPath path; |
| 217 path.addRRect(rr); | 217 path.addRRect(rr); |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 393 SkASSERT(!fUseGDIHasBeenCalled); | 393 SkASSERT(!fUseGDIHasBeenCalled); |
| 394 SkDEBUGCODE(fUseGDIHasBeenCalled = true;) | 394 SkDEBUGCODE(fUseGDIHasBeenCalled = true;) |
| 395 | 395 |
| 396 fUseGDI = gdiCanHandleText(paint); | 396 fUseGDI = gdiCanHandleText(paint); |
| 397 if (fUseGDI) { | 397 if (fUseGDI) { |
| 398 fSavedTextColor = GetTextColor(hdc); | 398 fSavedTextColor = GetTextColor(hdc); |
| 399 SetTextColor(hdc, skia::SkColorToCOLORREF(paint.getColor())); | 399 SetTextColor(hdc, skia::SkColorToCOLORREF(paint.getColor())); |
| 400 | 400 |
| 401 LOGFONT lf; | 401 LOGFONT lf; |
| 402 SkLOGFONTFromTypeface(paint.getTypeface(), &lf); | 402 SkLOGFONTFromTypeface(paint.getTypeface(), &lf); |
| 403 lf.lfHeight = -SkScalarRound(paint.getTextSize()); | 403 lf.lfHeight = -SkScalarRoundToInt(paint.getTextSize()); |
| 404 fNewFont = CreateFontIndirect(&lf); | 404 fNewFont = CreateFontIndirect(&lf); |
| 405 fSavedFont = (HFONT)::SelectObject(hdc, fNewFont); | 405 fSavedFont = (HFONT)::SelectObject(hdc, fNewFont); |
| 406 fHDC = hdc; | 406 fHDC = hdc; |
| 407 } | 407 } |
| 408 return fUseGDI; | 408 return fUseGDI; |
| 409 } | 409 } |
| 410 | 410 |
| 411 SkGDIFontSetup::~SkGDIFontSetup() { | 411 SkGDIFontSetup::~SkGDIFontSetup() { |
| 412 if (fUseGDI) { | 412 if (fUseGDI) { |
| 413 ::SelectObject(fHDC, fSavedFont); | 413 ::SelectObject(fHDC, fSavedFont); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 481 SkScalar x, | 481 SkScalar x, |
| 482 SkScalar y, | 482 SkScalar y, |
| 483 const SkPaint& paint) { | 483 const SkPaint& paint) { |
| 484 SkGDIFontSetup setup; | 484 SkGDIFontSetup setup; |
| 485 bool useDrawPath = true; | 485 bool useDrawPath = true; |
| 486 | 486 |
| 487 if (SkPaint::kUTF8_TextEncoding != paint.getTextEncoding() | 487 if (SkPaint::kUTF8_TextEncoding != paint.getTextEncoding() |
| 488 && setup.useGDI(hdc_, paint)) { | 488 && setup.useGDI(hdc_, paint)) { |
| 489 UINT options = getTextOutOptions(paint); | 489 UINT options = getTextOutOptions(paint); |
| 490 UINT count = byteLength >> 1; | 490 UINT count = byteLength >> 1; |
| 491 useDrawPath = !EnsureExtTextOut(hdc_, SkScalarRound(x), | 491 useDrawPath = !EnsureExtTextOut(hdc_, SkScalarRoundToInt(x), |
| 492 SkScalarRound(y + getAscent(paint)), options, 0, | 492 SkScalarRoundToInt(y + getAscent(paint)), options, 0, |
| 493 reinterpret_cast<const wchar_t*>(text), count, NULL, | 493 reinterpret_cast<const wchar_t*>(text), count, NULL, |
| 494 paint.getTypeface()); | 494 paint.getTypeface()); |
| 495 } | 495 } |
| 496 | 496 |
| 497 if (useDrawPath) { | 497 if (useDrawPath) { |
| 498 SkPath path; | 498 SkPath path; |
| 499 paint.getTextPath(text, byteLength, x, y, &path); | 499 paint.getTextPath(text, byteLength, x, y, &path); |
| 500 drawPath(draw, path, paint); | 500 drawPath(draw, path, paint); |
| 501 } | 501 } |
| 502 } | 502 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 520 const SkScalar pos[], | 520 const SkScalar pos[], |
| 521 SkScalar constY, | 521 SkScalar constY, |
| 522 int scalarsPerPos, | 522 int scalarsPerPos, |
| 523 const SkPaint& paint) { | 523 const SkPaint& paint) { |
| 524 SkGDIFontSetup setup; | 524 SkGDIFontSetup setup; |
| 525 bool useDrawText = true; | 525 bool useDrawText = true; |
| 526 | 526 |
| 527 if (2 == scalarsPerPos | 527 if (2 == scalarsPerPos |
| 528 && SkPaint::kUTF8_TextEncoding != paint.getTextEncoding() | 528 && SkPaint::kUTF8_TextEncoding != paint.getTextEncoding() |
| 529 && setup.useGDI(hdc_, paint)) { | 529 && setup.useGDI(hdc_, paint)) { |
| 530 int startX = SkScalarRound(pos[0]); | 530 int startX = SkScalarRoundToInt(pos[0]); |
| 531 int startY = SkScalarRound(pos[1] + getAscent(paint)); | 531 int startY = SkScalarRoundToInt(pos[1] + getAscent(paint)); |
| 532 const int count = len >> 1; | 532 const int count = len >> 1; |
| 533 SkAutoSTMalloc<64, INT> storage(count); | 533 SkAutoSTMalloc<64, INT> storage(count); |
| 534 INT* advances = storage.get(); | 534 INT* advances = storage.get(); |
| 535 for (int i = 0; i < count - 1; ++i) { | 535 for (int i = 0; i < count - 1; ++i) { |
| 536 advances[i] = SkScalarRound(pos[2] - pos[0]); | 536 advances[i] = SkScalarRoundToInt(pos[2] - pos[0]); |
| 537 pos += 2; | 537 pos += 2; |
| 538 } | 538 } |
| 539 useDrawText = !EnsureExtTextOut(hdc_, startX, startY, | 539 useDrawText = !EnsureExtTextOut(hdc_, startX, startY, |
| 540 getTextOutOptions(paint), 0, reinterpret_cast<const wchar_t*>(text), | 540 getTextOutOptions(paint), 0, reinterpret_cast<const wchar_t*>(text), |
| 541 count, advances, paint.getTypeface()); | 541 count, advances, paint.getTypeface()); |
| 542 } | 542 } |
| 543 | 543 |
| 544 if (useDrawText) { | 544 if (useDrawText) { |
| 545 size_t (*bytesPerCodePoint)(const char*); | 545 size_t (*bytesPerCodePoint)(const char*); |
| 546 switch (paint.getTextEncoding()) { | 546 switch (paint.getTextEncoding()) { |
| (...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 853 // Begin/end contours with a half square extension. | 853 // Begin/end contours with a half square extension. |
| 854 pen_style |= PS_ENDCAP_SQUARE; | 854 pen_style |= PS_ENDCAP_SQUARE; |
| 855 break; | 855 break; |
| 856 default: | 856 default: |
| 857 SkASSERT(false); | 857 SkASSERT(false); |
| 858 break; | 858 break; |
| 859 } | 859 } |
| 860 | 860 |
| 861 return CreatePen(use_pen, | 861 return CreatePen(use_pen, |
| 862 SkColorToCOLORREF(paint.getColor()), | 862 SkColorToCOLORREF(paint.getColor()), |
| 863 SkScalarRound(paint.getStrokeWidth()), | 863 SkScalarRoundToInt(paint.getStrokeWidth()), |
| 864 paint.getStrokeMiter(), | 864 paint.getStrokeMiter(), |
| 865 pen_style); | 865 pen_style); |
| 866 } | 866 } |
| 867 | 867 |
| 868 void VectorPlatformDeviceEmf::InternalDrawBitmap(const SkBitmap& bitmap, | 868 void VectorPlatformDeviceEmf::InternalDrawBitmap(const SkBitmap& bitmap, |
| 869 int x, int y, | 869 int x, int y, |
| 870 const SkPaint& paint) { | 870 const SkPaint& paint) { |
| 871 unsigned char alpha = paint.getAlpha(); | 871 unsigned char alpha = paint.getAlpha(); |
| 872 if (alpha == 0) | 872 if (alpha == 0) |
| 873 return; | 873 return; |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 985 pixels, | 985 pixels, |
| 986 reinterpret_cast<const BITMAPINFO*>(&hdr), | 986 reinterpret_cast<const BITMAPINFO*>(&hdr), |
| 987 DIB_RGB_COLORS, | 987 DIB_RGB_COLORS, |
| 988 SRCCOPY); | 988 SRCCOPY); |
| 989 } | 989 } |
| 990 EndPlatformPaint(); | 990 EndPlatformPaint(); |
| 991 Cleanup(); | 991 Cleanup(); |
| 992 } | 992 } |
| 993 | 993 |
| 994 } // namespace skia | 994 } // namespace skia |
| OLD | NEW |