OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium 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 "core/fxge/include/fx_ge.h" | 5 #include "core/fxge/include/fx_ge.h" |
6 | 6 |
7 #if defined(_SKIA_SUPPORT_) | 7 #if defined(_SKIA_SUPPORT_) |
8 #include "core/fxcodec/include/fx_codec.h" | 8 #include "core/fxcodec/include/fx_codec.h" |
9 | 9 |
10 #include "core/fpdfapi/fpdf_page/cpdf_shadingpattern.h" | 10 #include "core/fpdfapi/fpdf_page/cpdf_shadingpattern.h" |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 } | 493 } |
494 spaint->setStyle(SkPaint::kStroke_Style); | 494 spaint->setStyle(SkPaint::kStroke_Style); |
495 spaint->setAntiAlias(true); | 495 spaint->setAntiAlias(true); |
496 spaint->setStrokeWidth(width); | 496 spaint->setStrokeWidth(width); |
497 spaint->setStrokeMiter(pGraphState->m_MiterLimit); | 497 spaint->setStrokeMiter(pGraphState->m_MiterLimit); |
498 spaint->setStrokeCap(cap); | 498 spaint->setStrokeCap(cap); |
499 spaint->setStrokeJoin(join); | 499 spaint->setStrokeJoin(join); |
500 } | 500 } |
501 | 501 |
502 CFX_SkiaDeviceDriver::CFX_SkiaDeviceDriver(CFX_DIBitmap* pBitmap, | 502 CFX_SkiaDeviceDriver::CFX_SkiaDeviceDriver(CFX_DIBitmap* pBitmap, |
503 int dither_bits, | |
504 FX_BOOL bRgbByteOrder, | 503 FX_BOOL bRgbByteOrder, |
505 CFX_DIBitmap* pOriDevice, | 504 CFX_DIBitmap* pOriDevice, |
506 FX_BOOL bGroupKnockout) | 505 FX_BOOL bGroupKnockout) |
507 : m_pBitmap(pBitmap), | 506 : m_pBitmap(pBitmap), |
508 m_pOriDevice(pOriDevice), | 507 m_pOriDevice(pOriDevice), |
509 m_pRecorder(nullptr), | 508 m_pRecorder(nullptr), |
510 m_ditherBits(dither_bits), | |
511 m_bRgbByteOrder(bRgbByteOrder), | 509 m_bRgbByteOrder(bRgbByteOrder), |
512 m_bGroupKnockout(bGroupKnockout) { | 510 m_bGroupKnockout(bGroupKnockout) { |
513 SkBitmap skBitmap; | 511 SkBitmap skBitmap; |
514 SkImageInfo imageInfo = | 512 SkImageInfo imageInfo = |
515 SkImageInfo::Make(pBitmap->GetWidth(), pBitmap->GetHeight(), | 513 SkImageInfo::Make(pBitmap->GetWidth(), pBitmap->GetHeight(), |
516 kN32_SkColorType, kOpaque_SkAlphaType); | 514 kN32_SkColorType, kOpaque_SkAlphaType); |
517 skBitmap.installPixels(imageInfo, pBitmap->GetBuffer(), pBitmap->GetPitch(), | 515 skBitmap.installPixels(imageInfo, pBitmap->GetBuffer(), pBitmap->GetPitch(), |
518 nullptr, /* to do : set color table */ | 516 nullptr, /* to do : set color table */ |
519 nullptr, nullptr); | 517 nullptr, nullptr); |
520 m_pCanvas = new SkCanvas(skBitmap); | 518 m_pCanvas = new SkCanvas(skBitmap); |
521 if (m_bGroupKnockout) | 519 if (m_bGroupKnockout) |
522 SkDebugf(""); // FIXME(caryclark) suppress 'm_bGroupKnockout is unused' | 520 SkDebugf(""); // FIXME(caryclark) suppress 'm_bGroupKnockout is unused' |
523 } | 521 } |
524 | 522 |
525 CFX_SkiaDeviceDriver::CFX_SkiaDeviceDriver(int size_x, int size_y) | 523 CFX_SkiaDeviceDriver::CFX_SkiaDeviceDriver(int size_x, int size_y) |
526 : m_pBitmap(nullptr), | 524 : m_pBitmap(nullptr), |
527 m_pOriDevice(nullptr), | 525 m_pOriDevice(nullptr), |
528 m_pRecorder(new SkPictureRecorder), | 526 m_pRecorder(new SkPictureRecorder), |
529 m_ditherBits(0), | |
530 m_bRgbByteOrder(FALSE), | 527 m_bRgbByteOrder(FALSE), |
531 m_bGroupKnockout(FALSE) { | 528 m_bGroupKnockout(FALSE) { |
532 m_pRecorder->beginRecording(SkIntToScalar(size_x), SkIntToScalar(size_y)); | 529 m_pRecorder->beginRecording(SkIntToScalar(size_x), SkIntToScalar(size_y)); |
533 m_pCanvas = m_pRecorder->getRecordingCanvas(); | 530 m_pCanvas = m_pRecorder->getRecordingCanvas(); |
534 } | 531 } |
535 | 532 |
536 CFX_SkiaDeviceDriver::CFX_SkiaDeviceDriver(SkPictureRecorder* recorder) | 533 CFX_SkiaDeviceDriver::CFX_SkiaDeviceDriver(SkPictureRecorder* recorder) |
537 : m_pBitmap(nullptr), | 534 : m_pBitmap(nullptr), |
538 m_pOriDevice(nullptr), | 535 m_pOriDevice(nullptr), |
539 m_pRecorder(recorder), | 536 m_pRecorder(recorder), |
540 m_ditherBits(0), | |
541 m_bRgbByteOrder(FALSE), | 537 m_bRgbByteOrder(FALSE), |
542 m_bGroupKnockout(FALSE) { | 538 m_bGroupKnockout(FALSE) { |
543 m_pCanvas = m_pRecorder->getRecordingCanvas(); | 539 m_pCanvas = m_pRecorder->getRecordingCanvas(); |
544 } | 540 } |
545 | 541 |
546 CFX_SkiaDeviceDriver::~CFX_SkiaDeviceDriver() { | 542 CFX_SkiaDeviceDriver::~CFX_SkiaDeviceDriver() { |
547 if (!m_pRecorder) | 543 if (!m_pRecorder) |
548 delete m_pCanvas; | 544 delete m_pCanvas; |
549 } | 545 } |
550 | 546 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
587 return m_pCanvas->imageInfo().height(); | 583 return m_pCanvas->imageInfo().height(); |
588 case FXDC_BITS_PIXEL: | 584 case FXDC_BITS_PIXEL: |
589 return 32; | 585 return 32; |
590 case FXDC_HORZ_SIZE: | 586 case FXDC_HORZ_SIZE: |
591 case FXDC_VERT_SIZE: | 587 case FXDC_VERT_SIZE: |
592 return 0; | 588 return 0; |
593 case FXDC_RENDER_CAPS: | 589 case FXDC_RENDER_CAPS: |
594 return FXRC_GET_BITS | FXRC_ALPHA_PATH | FXRC_ALPHA_IMAGE | | 590 return FXRC_GET_BITS | FXRC_ALPHA_PATH | FXRC_ALPHA_IMAGE | |
595 FXRC_BLEND_MODE | FXRC_SOFT_CLIP | FXRC_ALPHA_OUTPUT | | 591 FXRC_BLEND_MODE | FXRC_SOFT_CLIP | FXRC_ALPHA_OUTPUT | |
596 FXRC_FILLSTROKE_PATH | FXRC_SHADING; | 592 FXRC_FILLSTROKE_PATH | FXRC_SHADING; |
597 case FXDC_DITHER_BITS: | |
598 return m_ditherBits; | |
599 } | 593 } |
600 return 0; | 594 return 0; |
601 } | 595 } |
602 | 596 |
603 void CFX_SkiaDeviceDriver::SaveState() { | 597 void CFX_SkiaDeviceDriver::SaveState() { |
604 m_pCanvas->save(); | 598 m_pCanvas->save(); |
605 } | 599 } |
606 | 600 |
607 void CFX_SkiaDeviceDriver::RestoreState(bool bKeepSaved) { | 601 void CFX_SkiaDeviceDriver::RestoreState(bool bKeepSaved) { |
608 m_pCanvas->restore(); | 602 m_pCanvas->restore(); |
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1083 CFX_FxgeDevice::CFX_FxgeDevice() { | 1077 CFX_FxgeDevice::CFX_FxgeDevice() { |
1084 m_bOwnedBitmap = FALSE; | 1078 m_bOwnedBitmap = FALSE; |
1085 } | 1079 } |
1086 | 1080 |
1087 SkPictureRecorder* CFX_FxgeDevice::CreateRecorder(int size_x, int size_y) { | 1081 SkPictureRecorder* CFX_FxgeDevice::CreateRecorder(int size_x, int size_y) { |
1088 CFX_SkiaDeviceDriver* skDriver = new CFX_SkiaDeviceDriver(size_x, size_y); | 1082 CFX_SkiaDeviceDriver* skDriver = new CFX_SkiaDeviceDriver(size_x, size_y); |
1089 SetDeviceDriver(skDriver); | 1083 SetDeviceDriver(skDriver); |
1090 return skDriver->GetRecorder(); | 1084 return skDriver->GetRecorder(); |
1091 } | 1085 } |
1092 | 1086 |
1093 bool CFX_FxgeDevice::Attach(CFX_DIBitmap* pBitmap, | 1087 bool CFX_FxgeDevice::AttachEx(CFX_DIBitmap* pBitmap, |
1094 int dither_bits, | 1088 bool bRgbByteOrder, |
1095 bool bRgbByteOrder, | 1089 CFX_DIBitmap* pOriDevice, |
1096 CFX_DIBitmap* pOriDevice, | 1090 bool bGroupKnockout) { |
1097 bool bGroupKnockout) { | |
1098 if (!pBitmap) | 1091 if (!pBitmap) |
1099 return false; | 1092 return false; |
1100 SetBitmap(pBitmap); | 1093 SetBitmap(pBitmap); |
1101 SetDeviceDriver(new CFX_SkiaDeviceDriver(pBitmap, dither_bits, bRgbByteOrder, | 1094 SetDeviceDriver(new CFX_SkiaDeviceDriver(pBitmap, bRgbByteOrder, pOriDevice, |
1102 pOriDevice, bGroupKnockout)); | 1095 bGroupKnockout)); |
1103 return true; | 1096 return true; |
1104 } | 1097 } |
1105 | 1098 |
1106 bool CFX_FxgeDevice::AttachRecorder(SkPictureRecorder* recorder) { | 1099 bool CFX_FxgeDevice::AttachRecorder(SkPictureRecorder* recorder) { |
1107 if (!recorder) | 1100 if (!recorder) |
1108 return false; | 1101 return false; |
1109 SetDeviceDriver(new CFX_SkiaDeviceDriver(recorder)); | 1102 SetDeviceDriver(new CFX_SkiaDeviceDriver(recorder)); |
1110 return true; | 1103 return true; |
1111 } | 1104 } |
1112 | 1105 |
1113 bool CFX_FxgeDevice::Create(int width, | 1106 bool CFX_FxgeDevice::CreateEx(int width, |
1114 int height, | 1107 int height, |
1115 FXDIB_Format format, | 1108 FXDIB_Format format, |
1116 int dither_bits, | 1109 CFX_DIBitmap* pOriDevice) { |
1117 CFX_DIBitmap* pOriDevice) { | |
1118 m_bOwnedBitmap = TRUE; | 1110 m_bOwnedBitmap = TRUE; |
1119 CFX_DIBitmap* pBitmap = new CFX_DIBitmap; | 1111 CFX_DIBitmap* pBitmap = new CFX_DIBitmap; |
1120 if (!pBitmap->Create(width, height, format)) { | 1112 if (!pBitmap->Create(width, height, format)) { |
1121 delete pBitmap; | 1113 delete pBitmap; |
1122 return false; | 1114 return false; |
1123 } | 1115 } |
1124 SetBitmap(pBitmap); | 1116 SetBitmap(pBitmap); |
1125 CFX_SkiaDeviceDriver* pDriver = | 1117 CFX_SkiaDeviceDriver* pDriver = |
1126 new CFX_SkiaDeviceDriver(pBitmap, dither_bits, FALSE, pOriDevice, FALSE); | 1118 new CFX_SkiaDeviceDriver(pBitmap, FALSE, pOriDevice, FALSE); |
1127 SetDeviceDriver(pDriver); | 1119 SetDeviceDriver(pDriver); |
1128 return true; | 1120 return true; |
1129 } | 1121 } |
1130 | 1122 |
1131 CFX_FxgeDevice::~CFX_FxgeDevice() { | 1123 CFX_FxgeDevice::~CFX_FxgeDevice() { |
1132 if (m_bOwnedBitmap && GetBitmap()) | 1124 if (m_bOwnedBitmap && GetBitmap()) |
1133 delete GetBitmap(); | 1125 delete GetBitmap(); |
1134 } | 1126 } |
1135 | 1127 |
1136 #endif | 1128 #endif |
OLD | NEW |