From 2f307669ded2621f87d0b019e508f6663523f1d7 Mon Sep 17 00:00:00 2001 From: thestig Date: Mon, 13 Jun 2016 15:02:05 -0700 Subject: Remove default arguments from IFX_RenderDeviceDriver. Review-Url: https://codereview.chromium.org/2059883004 --- core/fxge/apple/fx_quartz_device.cpp | 194 +++++++++++++++++------------------ 1 file changed, 92 insertions(+), 102 deletions(-) (limited to 'core/fxge/apple/fx_quartz_device.cpp') diff --git a/core/fxge/apple/fx_quartz_device.cpp b/core/fxge/apple/fx_quartz_device.cpp index 154910b69f..4e1e62d6eb 100644 --- a/core/fxge/apple/fx_quartz_device.cpp +++ b/core/fxge/apple/fx_quartz_device.cpp @@ -340,14 +340,13 @@ static CGBlendMode GetCGBlendMode(int blend_type) { } return mode; } + FX_BOOL CFX_QuartzDeviceDriver::DrawPath(const CFX_PathData* pathData, const CFX_Matrix* matrix, const CFX_GraphStateData* graphState, uint32_t fillArgb, uint32_t strokeArgb, int fillMode, - int alpha_flag, - void* pIccTransform, int blend_type) { SaveState(); CGBlendMode mode = GetCGBlendMode(blend_type); @@ -394,11 +393,10 @@ FX_BOOL CFX_QuartzDeviceDriver::DrawPath(const CFX_PathData* pathData, RestoreState(false); return TRUE; } -FX_BOOL CFX_QuartzDeviceDriver::FillRect(const FX_RECT* rect, - FX_ARGB fillArgb, - int alphaFlag, - void* iccTransform, - int blend_type) { + +FX_BOOL CFX_QuartzDeviceDriver::FillRectWithBlend(const FX_RECT* rect, + FX_ARGB fillArgb, + int blend_type) { CGBlendMode mode = GetCGBlendMode(blend_type); if (mode != kCGBlendModeNormal) { CGContextSetBlendMode(m_context, mode); @@ -416,13 +414,12 @@ FX_BOOL CFX_QuartzDeviceDriver::FillRect(const FX_RECT* rect, } return TRUE; } + FX_BOOL CFX_QuartzDeviceDriver::DrawCosmeticLine(FX_FLOAT x1, FX_FLOAT y1, FX_FLOAT x2, FX_FLOAT y2, uint32_t argb, - int alphaFlag, - void* iccTransform, int blend_type) { CGBlendMode mode = GetCGBlendMode(blend_type); if (mode != kCGBlendModeNormal) { @@ -447,6 +444,7 @@ FX_BOOL CFX_QuartzDeviceDriver::DrawCosmeticLine(FX_FLOAT x1, } return TRUE; } + FX_BOOL CFX_QuartzDeviceDriver::GetClipBox(FX_RECT* rect) { CGRect r = CGContextGetClipBoundingBox(m_context); r = CGRectApplyAffineTransform(r, m_user2FoxitDevice); @@ -456,20 +454,15 @@ FX_BOOL CFX_QuartzDeviceDriver::GetClipBox(FX_RECT* rect) { rect->bottom = FXSYS_ceil(r.origin.y + r.size.height); return TRUE; } + FX_BOOL CFX_QuartzDeviceDriver::GetDIBits(CFX_DIBitmap* bitmap, int32_t left, - int32_t top, - void* pIccTransform, - FX_BOOL bDEdge) { - if (FXDC_PRINTER == m_deviceClass) { - return FALSE; - } - if (bitmap->GetBPP() < 32) { - return FALSE; - } - if (!(m_renderCaps | FXRC_GET_BITS)) { + int32_t top) { + if (FXDC_PRINTER == m_deviceClass || bitmap->GetBPP() < 32 || + !(m_renderCaps | FXRC_GET_BITS)) { return FALSE; } + CGPoint pt = CGPointMake(left, top); pt = CGPointApplyAffineTransform(pt, m_foxitDevice2User); CGAffineTransform ctm = CGContextGetCTM(m_context); @@ -481,12 +474,11 @@ FX_BOOL CFX_QuartzDeviceDriver::GetDIBits(CFX_DIBitmap* bitmap, CGFloat width = (CGFloat)bitmap->GetWidth(); CGFloat height = (CGFloat)bitmap->GetHeight(); - if (width + pt.x > m_width) { + if (width + pt.x > m_width) width -= (width + pt.x - m_width); - } - if (height + pt.y > m_height) { + if (height + pt.y > m_height) height -= (height + pt.y - m_height); - } + CGImageRef subImage = CGImageCreateWithImageInRect( image, CGRectMake(pt.x, pt.y, width, height)); CGContextRef context = createContextWithBitmap(bitmap); @@ -496,29 +488,29 @@ FX_BOOL CFX_QuartzDeviceDriver::GetDIBits(CFX_DIBitmap* bitmap, CGContextRelease(context); CGImageRelease(subImage); CGImageRelease(image); - if (bitmap->HasAlpha()) { - for (int row = 0; row < bitmap->GetHeight(); row++) { - uint8_t* pScanline = (uint8_t*)bitmap->GetScanline(row); - for (int col = 0; col < bitmap->GetWidth(); col++) { - if (pScanline[3] > 0) { - pScanline[0] = (pScanline[0] * 255.f / pScanline[3] + .5f); - pScanline[1] = (pScanline[1] * 255.f / pScanline[3] + .5f); - pScanline[2] = (pScanline[2] * 255.f / pScanline[3] + .5f); - } - pScanline += 4; + if (!bitmap->HasAlpha()) + return TRUE; + + for (int row = 0; row < bitmap->GetHeight(); row++) { + uint8_t* pScanline = (uint8_t*)bitmap->GetScanline(row); + for (int col = 0; col < bitmap->GetWidth(); col++) { + if (pScanline[3] > 0) { + pScanline[0] = (pScanline[0] * 255.f / pScanline[3] + .5f); + pScanline[1] = (pScanline[1] * 255.f / pScanline[3] + .5f); + pScanline[2] = (pScanline[2] * 255.f / pScanline[3] + .5f); } + pScanline += 4; } } return TRUE; } + FX_BOOL CFX_QuartzDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap, FX_ARGB argb, const FX_RECT* srcRect, int dest_left, int dest_top, - int blendType, - int alphaFlag, - void* iccTransform) { + int blendType) { SaveState(); CGFloat src_left, src_top, src_width, src_height; if (srcRect) { @@ -635,6 +627,7 @@ FX_BOOL CFX_QuartzDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap, RestoreState(false); return TRUE; } + FX_BOOL CFX_QuartzDeviceDriver::StretchDIBits(const CFX_DIBSource* pBitmap, FX_ARGB argb, int dest_left, @@ -643,8 +636,6 @@ FX_BOOL CFX_QuartzDeviceDriver::StretchDIBits(const CFX_DIBSource* pBitmap, int dest_height, const FX_RECT* clipRect, uint32_t flags, - int alphaFlag, - void* iccTransform, int blend_type) { SaveState(); if (clipRect) { @@ -657,21 +648,20 @@ FX_BOOL CFX_QuartzDeviceDriver::StretchDIBits(const CFX_DIBSource* pBitmap, } CGRect rect = CGRectMake(dest_left, dest_top, dest_width, dest_height); rect = CGRectApplyAffineTransform(rect, m_foxitDevice2User); - if (FXDIB_BICUBIC_INTERPOL == flags) { + if (FXDIB_BICUBIC_INTERPOL == flags) CGContextSetInterpolationQuality(m_context, kCGInterpolationHigh); - } else if (FXDIB_DOWNSAMPLE == flags) { + else if (FXDIB_DOWNSAMPLE == flags) CGContextSetInterpolationQuality(m_context, kCGInterpolationNone); - } else { + else CGContextSetInterpolationQuality(m_context, kCGInterpolationMedium); - } - CG_SetImageTransform(dest_left, dest_top, dest_width, dest_height); + + CG_SetImageTransform(dest_left, dest_top, dest_width, dest_height, nullptr); CFX_DIBitmap* pBitmap1 = nullptr; if (pBitmap->IsAlphaMask()) { - if (pBitmap->GetBuffer()) { + if (pBitmap->GetBuffer()) pBitmap1 = (CFX_DIBitmap*)pBitmap; - } else { + else pBitmap1 = pBitmap->Clone(); - } if (!pBitmap1) { RestoreState(false); return FALSE; @@ -693,20 +683,19 @@ FX_BOOL CFX_QuartzDeviceDriver::StretchDIBits(const CFX_DIBSource* pBitmap, CGImageRelease(pImage); CGColorSpaceRelease(pColorSpace); CGDataProviderRelease(pBitmapProvider); - if (pBitmap1 != pBitmap) { + if (pBitmap1 != pBitmap) delete pBitmap1; - } + RestoreState(false); return TRUE; } if (pBitmap->GetBPP() < 32) { pBitmap1 = pBitmap->CloneConvert(FXDIB_Rgb32); } else { - if (pBitmap->GetBuffer()) { + if (pBitmap->GetBuffer()) pBitmap1 = (CFX_DIBitmap*)pBitmap; - } else { + else pBitmap1 = pBitmap->Clone(); - } } if (!pBitmap1) { RestoreState(false); @@ -735,25 +724,25 @@ FX_BOOL CFX_QuartzDeviceDriver::StretchDIBits(const CFX_DIBSource* pBitmap, CGContextDrawImage(m_context, rect, image); CGImageRelease(image); CGContextRelease(ctx); - if (pBitmap1 != pBitmap) { + if (pBitmap1 != pBitmap) delete pBitmap1; - } + RestoreState(false); return TRUE; } -FX_BOOL CFX_QuartzDeviceDriver::CG_DrawGlypRun(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pGlyphMatrix, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - uint32_t argb, - int alpha_flag, - void* pIccTransform) { - if (nChars == 0) { + +FX_BOOL CFX_QuartzDeviceDriver::CG_DrawGlyphRun( + int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pGlyphMatrix, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + uint32_t argb) { + if (nChars == 0) return TRUE; - } + CQuartz2D& quartz2d = static_cast(CFX_GEModule::Get()->GetPlatformData()) ->m_quartz2d; @@ -775,9 +764,9 @@ FX_BOOL CFX_QuartzDeviceDriver::CG_DrawGlypRun(int nChars, glyph_positions[i].y = pCharPos[i].m_OriginY; } CFX_Matrix text_matrix; - if (pObject2Device) { + if (pObject2Device) text_matrix.Concat(*pObject2Device); - } + CGAffineTransform matrix_cg = CGAffineTransformMake(text_matrix.a, text_matrix.b, text_matrix.c, text_matrix.d, text_matrix.e, text_matrix.f); @@ -797,9 +786,9 @@ FX_BOOL CFX_QuartzDeviceDriver::CG_DrawGlypRun(int nChars, CGAffineTransform glyph_matrix = CGAffineTransformMake( pGlyphMatrix->a, pGlyphMatrix->b, pGlyphMatrix->c, pGlyphMatrix->d, pGlyphMatrix->e, pGlyphMatrix->f); - if (m_foxitDevice2User.d < 0) { + if (m_foxitDevice2User.d < 0) glyph_matrix = CGAffineTransformInvert(glyph_matrix); - } + CGContextConcatCTM(m_context, glyph_matrix); CGContextTranslateCTM(m_context, -origin.x, -origin.y); } @@ -808,17 +797,17 @@ FX_BOOL CFX_QuartzDeviceDriver::CG_DrawGlypRun(int nChars, RestoreState(false); return TRUE; } + FX_BOOL CFX_QuartzDeviceDriver::DrawDeviceText(int nChars, const FXTEXT_CHARPOS* pCharPos, CFX_Font* pFont, CFX_FontCache* pCache, const CFX_Matrix* pObject2Device, FX_FLOAT font_size, - uint32_t color, - int alpha_flag, - void* pIccTransform) { + uint32_t color) { if (!pFont || !m_context) return FALSE; + FX_BOOL bBold = pFont->IsBold(); if (!bBold && pFont->GetSubstFont() && pFont->GetSubstFont()->m_Weight >= 500 && @@ -832,9 +821,8 @@ FX_BOOL CFX_QuartzDeviceDriver::DrawDeviceText(int nChars, while (i < nChars) { if (pCharPos[i].m_bGlyphAdjust || font_size < 0) { if (i > 0) { - ret = - CG_DrawGlypRun(i, pCharPos, pFont, pCache, nullptr, pObject2Device, - font_size, color, alpha_flag, pIccTransform); + ret = CG_DrawGlyphRun(i, pCharPos, pFont, pCache, nullptr, + pObject2Device, font_size, color); if (!ret) { RestoreState(false); return ret; @@ -850,9 +838,8 @@ FX_BOOL CFX_QuartzDeviceDriver::DrawDeviceText(int nChars, char_pos->m_AdjustMatrix[0], char_pos->m_AdjustMatrix[1], char_pos->m_AdjustMatrix[2], char_pos->m_AdjustMatrix[3], 0, 0); } - ret = CG_DrawGlypRun(1, char_pos, pFont, pCache, &glphy_matrix, - pObject2Device, font_size, color, alpha_flag, - pIccTransform); + ret = CG_DrawGlyphRun(1, char_pos, pFont, pCache, &glphy_matrix, + pObject2Device, font_size, color); if (!ret) { RestoreState(false); return ret; @@ -866,12 +853,13 @@ FX_BOOL CFX_QuartzDeviceDriver::DrawDeviceText(int nChars, } } if (i > 0) { - ret = CG_DrawGlypRun(i, pCharPos, pFont, pCache, nullptr, pObject2Device, - font_size, color, alpha_flag, pIccTransform); + ret = CG_DrawGlyphRun(i, pCharPos, pFont, pCache, nullptr, pObject2Device, + font_size, color); } RestoreState(false); return ret; } + void CFX_QuartzDeviceDriver::setStrokeInfo(const CFX_GraphStateData* graphState, FX_ARGB argb, FX_FLOAT lineWidth) { @@ -959,6 +947,7 @@ void CFX_QuartzDeviceDriver::setPathToContext(const CFX_PathData* pathData) { } } } + void CFX_QuartzDeviceDriver::CG_SetImageTransform(int dest_left, int dest_top, int dest_width, @@ -966,29 +955,30 @@ void CFX_QuartzDeviceDriver::CG_SetImageTransform(int dest_left, CGRect* rect) { int flip_y = m_foxitDevice2User.d * dest_height < 0 ? 1 : -1; int flip_x = m_foxitDevice2User.a * dest_width > 0 ? 1 : -1; - if (flip_y < 0 || flip_x < 0) { - if (dest_height < 0) { - dest_height = -dest_height; - dest_top -= dest_height; - } - CGRect rt = CGRectApplyAffineTransform( - CGRectMake(dest_left, dest_top, dest_width, dest_height), - m_foxitDevice2User); - CGFloat offset_x = (rt.origin.x) + rt.size.width / 2.f, - offset_y = (rt.origin.y) + rt.size.height / 2.f; - CGAffineTransform transform = CGAffineTransformIdentity; - transform = CGAffineTransformConcat( - transform, CGAffineTransformMake(1, 0, 0, 1, -offset_x, -offset_y)); - transform = CGAffineTransformConcat( - transform, CGAffineTransformMake(flip_x, 0, 0, flip_y, 0, 0)); - transform = CGAffineTransformConcat( - transform, CGAffineTransformMake(1, 0, 0, 1, offset_x, offset_y)); - CGContextConcatCTM(m_context, transform); - if (rect) { - *rect = CGRectApplyAffineTransform(*rect, transform); - } - } + if (flip_y >= 0 && flip_x >= 0) + return; + + if (dest_height < 0) { + dest_height = -dest_height; + dest_top -= dest_height; + } + CGRect rt = CGRectApplyAffineTransform( + CGRectMake(dest_left, dest_top, dest_width, dest_height), + m_foxitDevice2User); + CGFloat offset_x = (rt.origin.x) + rt.size.width / 2.f, + offset_y = (rt.origin.y) + rt.size.height / 2.f; + CGAffineTransform transform = CGAffineTransformIdentity; + transform = CGAffineTransformConcat( + transform, CGAffineTransformMake(1, 0, 0, 1, -offset_x, -offset_y)); + transform = CGAffineTransformConcat( + transform, CGAffineTransformMake(flip_x, 0, 0, flip_y, 0, 0)); + transform = CGAffineTransformConcat( + transform, CGAffineTransformMake(1, 0, 0, 1, offset_x, offset_y)); + CGContextConcatCTM(m_context, transform); + if (rect) + *rect = CGRectApplyAffineTransform(*rect, transform); } + void CFX_QuartzDeviceDriver::ClearDriver() { if (!m_context) return; -- cgit v1.2.3