Feature #6802 » 0001-Revert-WPdfImage.C-to-version-w-o-transparency.patch
| src/Wt/WPdfImage.C | ||
|---|---|---|
|
HPDF_Page_Concat(page_, 1, 0, 0, 1, x_, y_);
|
||
|
HPDF_Page_GSave(page_); // for painter->combinedTransform()
|
||
|
}
|
||
|
void WPdfImage::done()
|
||
| ... | ... | |
|
void WPdfImage::setChanged(WFlags<PainterChangeFlag> flags)
|
||
|
{
|
||
|
if (!flags.empty()) {
|
||
|
if (!(flags & (PainterChangeFlag::Transform | PainterChangeFlag::Clipping)).empty()) {
|
||
|
HPDF_Page_GRestore(page_);
|
||
|
HPDF_Page_GSave(page_);
|
||
|
HPDF_ExtGState gstate;
|
||
|
gstate = HPDF_CreateExtGState (pdf_);
|
||
|
currentFont_ = WFont();
|
||
|
HPDF_Page_GSave(page_);
|
||
|
if (painter()->hasClipping()) {
|
||
|
const WTransform& t = painter()->clipPathTransform();
|
||
|
if (!painter()->clipPath().isEmpty()) {
|
||
|
applyTransform(t);
|
||
|
applyTransform(t);
|
||
|
drawPlainPath(painter()->clipPath());
|
||
|
HPDF_Page_Clip(page_);
|
||
|
HPDF_Page_EndPath(page_);
|
||
|
drawPlainPath(painter()->clipPath());
|
||
|
HPDF_Page_Clip(page_);
|
||
|
HPDF_Page_EndPath(page_);
|
||
|
applyTransform(t.inverted());
|
||
|
}
|
||
|
applyTransform(t.inverted());
|
||
|
}
|
||
|
applyTransform(painter()->combinedTransform());
|
||
|
flags = PainterChangeFlag::Pen |
|
||
|
PainterChangeFlag::Brush |
|
||
|
PainterChangeFlag::Font;
|
||
|
}
|
||
|
if (flags.test(PainterChangeFlag::Pen)) {
|
||
|
const WPen& pen = painter()->pen();
|
||
|
if (pen.style() != PenStyle::None) {
|
||
|
const WColor& color = pen.color();
|
||
|
HPDF_Page_SetRGBStroke(page_,
|
||
|
color.red() / 255.,
|
||
|
color.green() / 255.,
|
||
|
color.blue() / 255.);
|
||
|
HPDF_ExtGState_SetAlphaStroke (gstate, color.alpha()/255.);
|
||
|
color.red() / 255.,
|
||
|
color.green() / 255.,
|
||
|
color.blue() / 255.);
|
||
|
WLength w = painter()->normalizedPenWidth(pen.width(), false);
|
||
|
HPDF_Page_SetLineWidth(page_, w.toPixels());
|
||
| ... | ... | |
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (flags.test(PainterChangeFlag::Brush)) {
|
||
|
const WBrush& brush = painter()->brush();
|
||
|
if (brush.style() != BrushStyle::None) {
|
||
|
const WColor& color = painter()->brush().color();
|
||
|
HPDF_Page_SetRGBFill(page_,
|
||
|
color.red() / 255.,
|
||
|
color.green() / 255.,
|
||
|
color.blue() / 255.);
|
||
|
HPDF_ExtGState_SetAlphaFill (gstate, color.alpha()/255.);
|
||
|
color.red() / 255.,
|
||
|
color.green() / 255.,
|
||
|
color.blue() / 255.);
|
||
|
}
|
||
|
}
|
||
|
HPDF_Page_SetExtGState (page_, gstate);
|
||
|
|
||
|
if (flags.test(PainterChangeFlag::Font)) {
|
||
|
const WFont& font = painter()->font();
|
||
|
if (font == currentFont_ && !trueTypeFonts_->busy())
|
||
| ... | ... | |
|
void WPdfImage::drawPath(const WPainterPath& path)
|
||
|
{
|
||
|
if (path.isEmpty())
|
||
|
return;
|
||
|
drawPlainPath(path);
|
||
|
paintPath();
|
||
| ... | ... | |
|
void WPdfImage::drawPlainPath(const WPainterPath& path)
|
||
|
{
|
||
|
if (path.isEmpty())
|
||
|
return;
|
||
|
const std::vector<WPainterPath::Segment>& segments = path.segments();
|
||
|
if (segments.size() > 0
|
||