Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(244)

Side by Side Diff: core/src/fxge/win32/fx_win32_print.cpp

Issue 1513363002: Remove CFX_AffineMatrix/CPDF_Matrix (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Nits Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/src/fxge/win32/fx_win32_gdipext.cpp ('k') | core/src/fxge/win32/win32_int.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "core/include/fxge/fx_ge.h" 7 #include "core/include/fxge/fx_ge.h"
8 8
9 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ 9 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_
10 10
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 } 129 }
130 CFX_DIBExtractor temp(pSource); 130 CFX_DIBExtractor temp(pSource);
131 CFX_DIBitmap* pBitmap = temp; 131 CFX_DIBitmap* pBitmap = temp;
132 if (pBitmap == NULL) { 132 if (pBitmap == NULL) {
133 return FALSE; 133 return FALSE;
134 } 134 }
135 return GDI_StretchDIBits(pBitmap, dest_left, dest_top, dest_width, 135 return GDI_StretchDIBits(pBitmap, dest_left, dest_top, dest_width,
136 dest_height, flags, pIccTransform); 136 dest_height, flags, pIccTransform);
137 } 137 }
138 static CFX_DIBitmap* Transform1bppBitmap(const CFX_DIBSource* pSrc, 138 static CFX_DIBitmap* Transform1bppBitmap(const CFX_DIBSource* pSrc,
139 const CFX_AffineMatrix* pDestMatrix) { 139 const CFX_Matrix* pDestMatrix) {
140 ASSERT(pSrc->GetFormat() == FXDIB_1bppRgb || 140 ASSERT(pSrc->GetFormat() == FXDIB_1bppRgb ||
141 pSrc->GetFormat() == FXDIB_1bppMask || 141 pSrc->GetFormat() == FXDIB_1bppMask ||
142 pSrc->GetFormat() == FXDIB_1bppCmyk); 142 pSrc->GetFormat() == FXDIB_1bppCmyk);
143 CFX_DIBExtractor src_bitmap(pSrc); 143 CFX_DIBExtractor src_bitmap(pSrc);
144 CFX_DIBitmap* pSrcBitmap = src_bitmap; 144 CFX_DIBitmap* pSrcBitmap = src_bitmap;
145 if (pSrcBitmap == NULL) { 145 if (pSrcBitmap == NULL) {
146 return NULL; 146 return NULL;
147 } 147 }
148 int src_width = pSrcBitmap->GetWidth(), src_height = pSrcBitmap->GetHeight(); 148 int src_width = pSrcBitmap->GetWidth(), src_height = pSrcBitmap->GetHeight();
149 uint8_t* src_buf = pSrcBitmap->GetBuffer(); 149 uint8_t* src_buf = pSrcBitmap->GetBuffer();
150 FX_DWORD src_pitch = pSrcBitmap->GetPitch(); 150 FX_DWORD src_pitch = pSrcBitmap->GetPitch();
151 FX_FLOAT dest_area = pDestMatrix->GetUnitArea(); 151 FX_FLOAT dest_area = pDestMatrix->GetUnitArea();
152 FX_FLOAT area_scale = 152 FX_FLOAT area_scale =
153 FXSYS_Div((FX_FLOAT)(src_width * src_height), dest_area); 153 FXSYS_Div((FX_FLOAT)(src_width * src_height), dest_area);
154 FX_FLOAT size_scale = FXSYS_sqrt(area_scale); 154 FX_FLOAT size_scale = FXSYS_sqrt(area_scale);
155 CFX_AffineMatrix adjusted_matrix(*pDestMatrix); 155 CFX_Matrix adjusted_matrix(*pDestMatrix);
156 adjusted_matrix.Scale(size_scale, size_scale); 156 adjusted_matrix.Scale(size_scale, size_scale);
157 CFX_FloatRect result_rect_f = adjusted_matrix.GetUnitRect(); 157 CFX_FloatRect result_rect_f = adjusted_matrix.GetUnitRect();
158 FX_RECT result_rect = result_rect_f.GetOutterRect(); 158 FX_RECT result_rect = result_rect_f.GetOutterRect();
159 CFX_AffineMatrix src2result; 159 CFX_Matrix src2result;
160 src2result.e = adjusted_matrix.c + adjusted_matrix.e; 160 src2result.e = adjusted_matrix.c + adjusted_matrix.e;
161 src2result.f = adjusted_matrix.d + adjusted_matrix.f; 161 src2result.f = adjusted_matrix.d + adjusted_matrix.f;
162 src2result.a = adjusted_matrix.a / pSrcBitmap->GetWidth(); 162 src2result.a = adjusted_matrix.a / pSrcBitmap->GetWidth();
163 src2result.b = adjusted_matrix.b / pSrcBitmap->GetWidth(); 163 src2result.b = adjusted_matrix.b / pSrcBitmap->GetWidth();
164 src2result.c = -adjusted_matrix.c / pSrcBitmap->GetHeight(); 164 src2result.c = -adjusted_matrix.c / pSrcBitmap->GetHeight();
165 src2result.d = -adjusted_matrix.d / pSrcBitmap->GetHeight(); 165 src2result.d = -adjusted_matrix.d / pSrcBitmap->GetHeight();
166 src2result.TranslateI(-result_rect.left, -result_rect.top); 166 src2result.TranslateI(-result_rect.left, -result_rect.top);
167 CFX_AffineMatrix result2src; 167 CFX_Matrix result2src;
168 result2src.SetReverse(src2result); 168 result2src.SetReverse(src2result);
169 CPDF_FixedMatrix result2src_fix(result2src, 8); 169 CPDF_FixedMatrix result2src_fix(result2src, 8);
170 int result_width = result_rect.Width(); 170 int result_width = result_rect.Width();
171 int result_height = result_rect.Height(); 171 int result_height = result_rect.Height();
172 CFX_DIBitmap* pTempBitmap = new CFX_DIBitmap; 172 CFX_DIBitmap* pTempBitmap = new CFX_DIBitmap;
173 if (!pTempBitmap->Create(result_width, result_height, pSrc->GetFormat())) { 173 if (!pTempBitmap->Create(result_width, result_height, pSrc->GetFormat())) {
174 delete pTempBitmap; 174 delete pTempBitmap;
175 if (pSrcBitmap != src_bitmap) { 175 if (pSrcBitmap != src_bitmap) {
176 delete pSrcBitmap; 176 delete pSrcBitmap;
177 } 177 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 } 217 }
218 } 218 }
219 if (pSrcBitmap != src_bitmap) { 219 if (pSrcBitmap != src_bitmap) {
220 delete pSrcBitmap; 220 delete pSrcBitmap;
221 } 221 }
222 return pTempBitmap; 222 return pTempBitmap;
223 } 223 }
224 FX_BOOL CGdiPrinterDriver::StartDIBits(const CFX_DIBSource* pSource, 224 FX_BOOL CGdiPrinterDriver::StartDIBits(const CFX_DIBSource* pSource,
225 int bitmap_alpha, 225 int bitmap_alpha,
226 FX_DWORD color, 226 FX_DWORD color,
227 const CFX_AffineMatrix* pMatrix, 227 const CFX_Matrix* pMatrix,
228 FX_DWORD render_flags, 228 FX_DWORD render_flags,
229 void*& handle, 229 void*& handle,
230 int alpha_flag, 230 int alpha_flag,
231 void* pIccTransform, 231 void* pIccTransform,
232 int blend_type) { 232 int blend_type) {
233 if (bitmap_alpha < 255 || pSource->HasAlpha() || 233 if (bitmap_alpha < 255 || pSource->HasAlpha() ||
234 (pSource->IsAlphaMask() && (pSource->GetBPP() != 1 || !m_bSupportROP))) { 234 (pSource->IsAlphaMask() && (pSource->GetBPP() != 1 || !m_bSupportROP))) {
235 return FALSE; 235 return FALSE;
236 } 236 }
237 CFX_FloatRect unit_rect = pMatrix->GetUnitRect(); 237 CFX_FloatRect unit_rect = pMatrix->GetUnitRect();
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 } 368 }
369 void CPSPrinterDriver::EndRendering() { 369 void CPSPrinterDriver::EndRendering() {
370 m_PSRenderer.EndRendering(); 370 m_PSRenderer.EndRendering();
371 } 371 }
372 void CPSPrinterDriver::SaveState() { 372 void CPSPrinterDriver::SaveState() {
373 m_PSRenderer.SaveState(); 373 m_PSRenderer.SaveState();
374 } 374 }
375 void CPSPrinterDriver::RestoreState(FX_BOOL bKeepSaved) { 375 void CPSPrinterDriver::RestoreState(FX_BOOL bKeepSaved) {
376 m_PSRenderer.RestoreState(bKeepSaved); 376 m_PSRenderer.RestoreState(bKeepSaved);
377 } 377 }
378 FX_BOOL CPSPrinterDriver::SetClip_PathFill( 378 FX_BOOL CPSPrinterDriver::SetClip_PathFill(const CFX_PathData* pPathData,
379 const CFX_PathData* pPathData, 379 const CFX_Matrix* pObject2Device,
380 const CFX_AffineMatrix* pObject2Device, 380 int fill_mode) {
381 int fill_mode) {
382 m_PSRenderer.SetClip_PathFill(pPathData, pObject2Device, fill_mode); 381 m_PSRenderer.SetClip_PathFill(pPathData, pObject2Device, fill_mode);
383 return TRUE; 382 return TRUE;
384 } 383 }
385 FX_BOOL CPSPrinterDriver::SetClip_PathStroke( 384 FX_BOOL CPSPrinterDriver::SetClip_PathStroke(
386 const CFX_PathData* pPathData, 385 const CFX_PathData* pPathData,
387 const CFX_AffineMatrix* pObject2Device, 386 const CFX_Matrix* pObject2Device,
388 const CFX_GraphStateData* pGraphState) { 387 const CFX_GraphStateData* pGraphState) {
389 m_PSRenderer.SetClip_PathStroke(pPathData, pObject2Device, pGraphState); 388 m_PSRenderer.SetClip_PathStroke(pPathData, pObject2Device, pGraphState);
390 return TRUE; 389 return TRUE;
391 } 390 }
392 FX_BOOL CPSPrinterDriver::DrawPath(const CFX_PathData* pPathData, 391 FX_BOOL CPSPrinterDriver::DrawPath(const CFX_PathData* pPathData,
393 const CFX_AffineMatrix* pObject2Device, 392 const CFX_Matrix* pObject2Device,
394 const CFX_GraphStateData* pGraphState, 393 const CFX_GraphStateData* pGraphState,
395 FX_ARGB fill_color, 394 FX_ARGB fill_color,
396 FX_ARGB stroke_color, 395 FX_ARGB stroke_color,
397 int fill_mode, 396 int fill_mode,
398 int alpha_flag, 397 int alpha_flag,
399 void* pIccTransform, 398 void* pIccTransform,
400 int blend_type) { 399 int blend_type) {
401 if (blend_type != FXDIB_BLEND_NORMAL) { 400 if (blend_type != FXDIB_BLEND_NORMAL) {
402 return FALSE; 401 return FALSE;
403 } 402 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 if (blend_type != FXDIB_BLEND_NORMAL) { 436 if (blend_type != FXDIB_BLEND_NORMAL) {
438 return FALSE; 437 return FALSE;
439 } 438 }
440 return m_PSRenderer.StretchDIBits(pBitmap, color, dest_left, dest_top, 439 return m_PSRenderer.StretchDIBits(pBitmap, color, dest_left, dest_top,
441 dest_width, dest_height, flags, alpha_flag, 440 dest_width, dest_height, flags, alpha_flag,
442 pIccTransform); 441 pIccTransform);
443 } 442 }
444 FX_BOOL CPSPrinterDriver::StartDIBits(const CFX_DIBSource* pBitmap, 443 FX_BOOL CPSPrinterDriver::StartDIBits(const CFX_DIBSource* pBitmap,
445 int bitmap_alpha, 444 int bitmap_alpha,
446 FX_DWORD color, 445 FX_DWORD color,
447 const CFX_AffineMatrix* pMatrix, 446 const CFX_Matrix* pMatrix,
448 FX_DWORD render_flags, 447 FX_DWORD render_flags,
449 void*& handle, 448 void*& handle,
450 int alpha_flag, 449 int alpha_flag,
451 void* pIccTransform, 450 void* pIccTransform,
452 int blend_type) { 451 int blend_type) {
453 if (blend_type != FXDIB_BLEND_NORMAL) { 452 if (blend_type != FXDIB_BLEND_NORMAL) {
454 return FALSE; 453 return FALSE;
455 } 454 }
456 if (bitmap_alpha < 255) { 455 if (bitmap_alpha < 255) {
457 return FALSE; 456 return FALSE;
458 } 457 }
459 handle = NULL; 458 handle = NULL;
460 return m_PSRenderer.DrawDIBits(pBitmap, color, pMatrix, render_flags, 459 return m_PSRenderer.DrawDIBits(pBitmap, color, pMatrix, render_flags,
461 alpha_flag, pIccTransform); 460 alpha_flag, pIccTransform);
462 } 461 }
463 FX_BOOL CPSPrinterDriver::DrawDeviceText(int nChars, 462 FX_BOOL CPSPrinterDriver::DrawDeviceText(int nChars,
464 const FXTEXT_CHARPOS* pCharPos, 463 const FXTEXT_CHARPOS* pCharPos,
465 CFX_Font* pFont, 464 CFX_Font* pFont,
466 CFX_FontCache* pCache, 465 CFX_FontCache* pCache,
467 const CFX_AffineMatrix* pObject2Device, 466 const CFX_Matrix* pObject2Device,
468 FX_FLOAT font_size, 467 FX_FLOAT font_size,
469 FX_DWORD color, 468 FX_DWORD color,
470 int alpha_flag, 469 int alpha_flag,
471 void* pIccTransform) { 470 void* pIccTransform) {
472 return m_PSRenderer.DrawText(nChars, pCharPos, pFont, pCache, pObject2Device, 471 return m_PSRenderer.DrawText(nChars, pCharPos, pFont, pCache, pObject2Device,
473 font_size, color, alpha_flag, pIccTransform); 472 font_size, color, alpha_flag, pIccTransform);
474 } 473 }
475 #endif 474 #endif
OLDNEW
« no previous file with comments | « core/src/fxge/win32/fx_win32_gdipext.cpp ('k') | core/src/fxge/win32/win32_int.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698