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 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1088 m_bOwnedBitmap = FALSE; | 1082 m_bOwnedBitmap = FALSE; |
1089 } | 1083 } |
1090 | 1084 |
1091 SkPictureRecorder* CFX_FxgeDevice::CreateRecorder(int size_x, int size_y) { | 1085 SkPictureRecorder* CFX_FxgeDevice::CreateRecorder(int size_x, int size_y) { |
1092 CFX_SkiaDeviceDriver* skDriver = new CFX_SkiaDeviceDriver(size_x, size_y); | 1086 CFX_SkiaDeviceDriver* skDriver = new CFX_SkiaDeviceDriver(size_x, size_y); |
1093 SetDeviceDriver(skDriver); | 1087 SetDeviceDriver(skDriver); |
1094 return skDriver->GetRecorder(); | 1088 return skDriver->GetRecorder(); |
1095 } | 1089 } |
1096 | 1090 |
1097 bool CFX_FxgeDevice::Attach(CFX_DIBitmap* pBitmap, | 1091 bool CFX_FxgeDevice::Attach(CFX_DIBitmap* pBitmap, |
1098 int dither_bits, | |
1099 bool bRgbByteOrder, | 1092 bool bRgbByteOrder, |
1100 CFX_DIBitmap* pOriDevice, | 1093 CFX_DIBitmap* pOriDevice, |
1101 bool bGroupKnockout) { | 1094 bool bGroupKnockout) { |
1102 if (!pBitmap) | 1095 if (!pBitmap) |
1103 return false; | 1096 return false; |
1104 SetBitmap(pBitmap); | 1097 SetBitmap(pBitmap); |
1105 SetDeviceDriver(new CFX_SkiaDeviceDriver(pBitmap, dither_bits, bRgbByteOrder, | 1098 SetDeviceDriver(new CFX_SkiaDeviceDriver(pBitmap, bRgbByteOrder, pOriDevice, |
1106 pOriDevice, bGroupKnockout)); | 1099 bGroupKnockout)); |
1107 return true; | 1100 return true; |
1108 } | 1101 } |
1109 | 1102 |
1110 bool CFX_FxgeDevice::AttachRecorder(SkPictureRecorder* recorder) { | 1103 bool CFX_FxgeDevice::AttachRecorder(SkPictureRecorder* recorder) { |
1111 if (!recorder) | 1104 if (!recorder) |
1112 return false; | 1105 return false; |
1113 SetDeviceDriver(new CFX_SkiaDeviceDriver(recorder)); | 1106 SetDeviceDriver(new CFX_SkiaDeviceDriver(recorder)); |
1114 return true; | 1107 return true; |
1115 } | 1108 } |
1116 | 1109 |
1117 bool CFX_FxgeDevice::Create(int width, | 1110 bool CFX_FxgeDevice::Create(int width, |
1118 int height, | 1111 int height, |
1119 FXDIB_Format format, | 1112 FXDIB_Format format, |
1120 int dither_bits, | |
1121 CFX_DIBitmap* pOriDevice) { | 1113 CFX_DIBitmap* pOriDevice) { |
1122 m_bOwnedBitmap = TRUE; | 1114 m_bOwnedBitmap = TRUE; |
1123 CFX_DIBitmap* pBitmap = new CFX_DIBitmap; | 1115 CFX_DIBitmap* pBitmap = new CFX_DIBitmap; |
1124 if (!pBitmap->Create(width, height, format)) { | 1116 if (!pBitmap->Create(width, height, format)) { |
1125 delete pBitmap; | 1117 delete pBitmap; |
1126 return false; | 1118 return false; |
1127 } | 1119 } |
1128 SetBitmap(pBitmap); | 1120 SetBitmap(pBitmap); |
1129 CFX_SkiaDeviceDriver* pDriver = | 1121 CFX_SkiaDeviceDriver* pDriver = |
1130 new CFX_SkiaDeviceDriver(pBitmap, dither_bits, FALSE, pOriDevice, FALSE); | 1122 new CFX_SkiaDeviceDriver(pBitmap, FALSE, pOriDevice, FALSE); |
1131 SetDeviceDriver(pDriver); | 1123 SetDeviceDriver(pDriver); |
1132 return true; | 1124 return true; |
1133 } | 1125 } |
1134 | 1126 |
1135 CFX_FxgeDevice::~CFX_FxgeDevice() { | 1127 CFX_FxgeDevice::~CFX_FxgeDevice() { |
1136 if (m_bOwnedBitmap && GetBitmap()) | 1128 if (m_bOwnedBitmap && GetBitmap()) |
1137 delete GetBitmap(); | 1129 delete GetBitmap(); |
1138 } | 1130 } |
1139 | 1131 |
1140 #endif | 1132 #endif |
OLD | NEW |