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 // 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/fpdfapi/fpdf_render/render_int.h" | 7 #include "core/fpdfapi/fpdf_render/render_int.h" |
8 | 8 |
9 #include "core/fpdfapi/fpdf_font/cpdf_type3char.h" | 9 #include "core/fpdfapi/fpdf_font/cpdf_type3char.h" |
10 #include "core/fpdfapi/fpdf_font/cpdf_type3font.h" | 10 #include "core/fpdfapi/fpdf_font/cpdf_type3font.h" |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 m_bStdCS = bStdCS; | 181 m_bStdCS = bStdCS; |
182 m_T3FillColor = fill_color; | 182 m_T3FillColor = fill_color; |
183 m_pType3Char = pType3Char; | 183 m_pType3Char = pType3Char; |
184 m_GroupFamily = GroupFamily; | 184 m_GroupFamily = GroupFamily; |
185 m_bLoadMask = bLoadMask; | 185 m_bLoadMask = bLoadMask; |
186 m_pFormResource = pFormResource; | 186 m_pFormResource = pFormResource; |
187 m_pPageResource = m_pContext->GetPageResources(); | 187 m_pPageResource = m_pContext->GetPageResources(); |
188 if (pInitialStates && !m_pType3Char) { | 188 if (pInitialStates && !m_pType3Char) { |
189 m_InitialStates.CopyStates(*pInitialStates); | 189 m_InitialStates.CopyStates(*pInitialStates); |
190 if (pParentState) { | 190 if (pParentState) { |
191 CPDF_ColorStateData* pColorData = | 191 const CPDF_ColorStateData* pColorData = |
192 (CPDF_ColorStateData*)(const CPDF_ColorStateData*) | 192 m_InitialStates.m_ColorState.GetObject(); |
193 m_InitialStates.m_ColorState; | 193 const CPDF_ColorStateData* pParentData = |
194 CPDF_ColorStateData* pParentData = | 194 pParentState->m_InitialStates.m_ColorState.GetObject(); |
195 (CPDF_ColorStateData*)(const CPDF_ColorStateData*) | |
196 pParentState->m_InitialStates.m_ColorState; | |
197 if (!pColorData || pColorData->m_FillColor.IsNull()) { | 195 if (!pColorData || pColorData->m_FillColor.IsNull()) { |
198 CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify(); | 196 CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify(); |
199 pData->m_FillRGB = pParentData->m_FillRGB; | 197 pData->m_FillRGB = pParentData->m_FillRGB; |
200 pData->m_FillColor.Copy(&pParentData->m_FillColor); | 198 pData->m_FillColor.Copy(&pParentData->m_FillColor); |
201 } | 199 } |
202 if (!pColorData || pColorData->m_StrokeColor.IsNull()) { | 200 if (!pColorData || pColorData->m_StrokeColor.IsNull()) { |
203 CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify(); | 201 CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify(); |
204 pData->m_StrokeRGB = pParentData->m_FillRGB; | 202 pData->m_StrokeRGB = pParentData->m_FillRGB; |
205 pData->m_StrokeColor.Copy(&pParentData->m_StrokeColor); | 203 pData->m_StrokeColor.Copy(&pParentData->m_StrokeColor); |
206 } | 204 } |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 if (m_Options.m_Flags & RENDER_FILL_FULLCOVER) { | 457 if (m_Options.m_Flags & RENDER_FILL_FULLCOVER) { |
460 FillType |= FXFILL_FULLCOVER; | 458 FillType |= FXFILL_FULLCOVER; |
461 } | 459 } |
462 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { | 460 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { |
463 FillType |= FXFILL_NOPATHSMOOTH; | 461 FillType |= FXFILL_NOPATHSMOOTH; |
464 } | 462 } |
465 if (bStroke) { | 463 if (bStroke) { |
466 FillType |= FX_FILL_STROKE; | 464 FillType |= FX_FILL_STROKE; |
467 } | 465 } |
468 const CPDF_GeneralStateData* pGeneralData = | 466 const CPDF_GeneralStateData* pGeneralData = |
469 ((CPDF_PageObject*)pPathObj)->m_GeneralState; | 467 static_cast<const CPDF_PageObject*>(pPathObj)->m_GeneralState.GetObject(); |
470 if (pGeneralData && pGeneralData->m_StrokeAdjust) { | 468 if (pGeneralData && pGeneralData->m_StrokeAdjust) { |
471 FillType |= FX_STROKE_ADJUST; | 469 FillType |= FX_STROKE_ADJUST; |
472 } | 470 } |
473 if (m_pType3Char) { | 471 if (m_pType3Char) { |
474 FillType |= FX_FILL_TEXT_MODE; | 472 FillType |= FX_FILL_TEXT_MODE; |
475 } | 473 } |
476 CFX_GraphStateData graphState(*pPathObj->m_GraphState); | 474 CFX_GraphStateData graphState(*pPathObj->m_GraphState.GetObject()); |
477 if (m_Options.m_Flags & RENDER_THINLINE) { | 475 if (m_Options.m_Flags & RENDER_THINLINE) { |
478 graphState.m_LineWidth = 0; | 476 graphState.m_LineWidth = 0; |
479 } | 477 } |
480 return m_pDevice->DrawPathWithBlend(pPathObj->m_Path, &path_matrix, | 478 return m_pDevice->DrawPathWithBlend(pPathObj->m_Path.GetObject(), |
481 &graphState, fill_argb, stroke_argb, | 479 &path_matrix, &graphState, fill_argb, |
482 FillType, m_curBlend); | 480 stroke_argb, FillType, m_curBlend); |
483 } | 481 } |
484 | 482 |
485 CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const { | 483 CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const { |
486 ASSERT(pObj); | 484 ASSERT(pObj); |
487 CPDF_DocRenderData* pDocCache = m_pContext->GetDocument()->GetRenderData(); | 485 CPDF_DocRenderData* pDocCache = m_pContext->GetDocument()->GetRenderData(); |
488 return pDocCache ? pDocCache->GetTransferFunc(pObj) : nullptr; | 486 return pDocCache ? pDocCache->GetTransferFunc(pObj) : nullptr; |
489 } | 487 } |
490 FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, | 488 FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, |
491 FX_BOOL bType3) const { | 489 FX_BOOL bType3) const { |
492 CPDF_ColorStateData* pColorData = | 490 const CPDF_ColorStateData* pColorData = pObj->m_ColorState.GetObject(); |
493 (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState; | |
494 if (m_pType3Char && !bType3 && | 491 if (m_pType3Char && !bType3 && |
495 (!m_pType3Char->m_bColored || | 492 (!m_pType3Char->m_bColored || |
496 (m_pType3Char->m_bColored && | 493 (m_pType3Char->m_bColored && |
497 (!pColorData || pColorData->m_FillColor.IsNull())))) { | 494 (!pColorData || pColorData->m_FillColor.IsNull())))) { |
498 return m_T3FillColor; | 495 return m_T3FillColor; |
499 } | 496 } |
500 if (!pColorData || pColorData->m_FillColor.IsNull()) { | 497 if (!pColorData || pColorData->m_FillColor.IsNull()) { |
501 pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*) | 498 pColorData = m_InitialStates.m_ColorState.GetObject(); |
502 m_InitialStates.m_ColorState; | |
503 } | 499 } |
504 FX_COLORREF rgb = pColorData->m_FillRGB; | 500 FX_COLORREF rgb = pColorData->m_FillRGB; |
505 if (rgb == (uint32_t)-1) { | 501 if (rgb == (uint32_t)-1) { |
506 return 0; | 502 return 0; |
507 } | 503 } |
508 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; | 504 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState.GetObject(); |
509 int alpha; | 505 int alpha; |
510 if (pGeneralData) { | 506 if (pGeneralData) { |
511 alpha = (int32_t)(pGeneralData->m_FillAlpha * 255); | 507 alpha = (int32_t)(pGeneralData->m_FillAlpha * 255); |
512 if (pGeneralData->m_pTR) { | 508 if (pGeneralData->m_pTR) { |
513 if (!pGeneralData->m_pTransferFunc) { | 509 if (!pGeneralData->m_pTransferFunc) { |
514 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = | 510 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = |
515 GetTransferFunc(pGeneralData->m_pTR); | 511 GetTransferFunc(pGeneralData->m_pTR); |
516 } | 512 } |
517 if (pGeneralData->m_pTransferFunc) { | 513 if (pGeneralData->m_pTransferFunc) { |
518 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); | 514 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); |
519 } | 515 } |
520 } | 516 } |
521 } else { | 517 } else { |
522 alpha = 255; | 518 alpha = 255; |
523 } | 519 } |
524 return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); | 520 return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); |
525 } | 521 } |
526 FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const { | 522 FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const { |
527 CPDF_ColorStateData* pColorData = | 523 const CPDF_ColorStateData* pColorData = pObj->m_ColorState.GetObject(); |
528 (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState; | |
529 if (m_pType3Char && (!m_pType3Char->m_bColored || | 524 if (m_pType3Char && (!m_pType3Char->m_bColored || |
530 (m_pType3Char->m_bColored && | 525 (m_pType3Char->m_bColored && |
531 (!pColorData || pColorData->m_StrokeColor.IsNull())))) { | 526 (!pColorData || pColorData->m_StrokeColor.IsNull())))) { |
532 return m_T3FillColor; | 527 return m_T3FillColor; |
533 } | 528 } |
534 if (!pColorData || pColorData->m_StrokeColor.IsNull()) { | 529 if (!pColorData || pColorData->m_StrokeColor.IsNull()) { |
535 pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*) | 530 pColorData = m_InitialStates.m_ColorState.GetObject(); |
536 m_InitialStates.m_ColorState; | |
537 } | 531 } |
538 FX_COLORREF rgb = pColorData->m_StrokeRGB; | 532 FX_COLORREF rgb = pColorData->m_StrokeRGB; |
539 if (rgb == (uint32_t)-1) { | 533 if (rgb == (uint32_t)-1) { |
540 return 0; | 534 return 0; |
541 } | 535 } |
542 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; | 536 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState.GetObject(); |
543 int alpha; | 537 int alpha; |
544 if (pGeneralData) { | 538 if (pGeneralData) { |
545 alpha = (int32_t)(pGeneralData->m_StrokeAlpha * 255); | 539 alpha = (int32_t)(pGeneralData->m_StrokeAlpha * 255); |
546 if (pGeneralData->m_pTR) { | 540 if (pGeneralData->m_pTR) { |
547 if (!pGeneralData->m_pTransferFunc) { | 541 if (!pGeneralData->m_pTransferFunc) { |
548 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = | 542 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = |
549 GetTransferFunc(pGeneralData->m_pTR); | 543 GetTransferFunc(pGeneralData->m_pTR); |
550 } | 544 } |
551 if (pGeneralData->m_pTransferFunc) { | 545 if (pGeneralData->m_pTransferFunc) { |
552 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); | 546 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); |
(...skipping 13 matching lines...) Expand all Loading... |
566 } | 560 } |
567 return; | 561 return; |
568 } | 562 } |
569 if (m_LastClipPath == ClipPath) | 563 if (m_LastClipPath == ClipPath) |
570 return; | 564 return; |
571 | 565 |
572 m_LastClipPath = ClipPath; | 566 m_LastClipPath = ClipPath; |
573 m_pDevice->RestoreState(true); | 567 m_pDevice->RestoreState(true); |
574 int nClipPath = ClipPath.GetPathCount(); | 568 int nClipPath = ClipPath.GetPathCount(); |
575 for (int i = 0; i < nClipPath; ++i) { | 569 for (int i = 0; i < nClipPath; ++i) { |
576 const CFX_PathData* pPathData = ClipPath.GetPath(i); | 570 const CFX_PathData* pPathData = ClipPath.GetPath(i).GetObject(); |
577 if (!pPathData) | 571 if (!pPathData) |
578 continue; | 572 continue; |
579 | 573 |
580 if (pPathData->GetPointCount() == 0) { | 574 if (pPathData->GetPointCount() == 0) { |
581 CFX_PathData EmptyPath; | 575 CFX_PathData EmptyPath; |
582 EmptyPath.AppendRect(-1, -1, 0, 0); | 576 EmptyPath.AppendRect(-1, -1, 0, 0); |
583 int fill_mode = FXFILL_WINDING; | 577 int fill_mode = FXFILL_WINDING; |
584 m_pDevice->SetClip_PathFill(&EmptyPath, nullptr, fill_mode); | 578 m_pDevice->SetClip_PathFill(&EmptyPath, nullptr, fill_mode); |
585 } else { | 579 } else { |
586 int ClipType = ClipPath.GetClipType(i); | 580 int ClipType = ClipPath.GetClipType(i); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 if (ClipPath.IsNull()) { | 616 if (ClipPath.IsNull()) { |
623 return; | 617 return; |
624 } | 618 } |
625 int fill_mode = 0; | 619 int fill_mode = 0; |
626 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { | 620 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { |
627 fill_mode |= FXFILL_NOPATHSMOOTH; | 621 fill_mode |= FXFILL_NOPATHSMOOTH; |
628 } | 622 } |
629 int nClipPath = ClipPath.GetPathCount(); | 623 int nClipPath = ClipPath.GetPathCount(); |
630 int i; | 624 int i; |
631 for (i = 0; i < nClipPath; i++) { | 625 for (i = 0; i < nClipPath; i++) { |
632 const CFX_PathData* pPathData = ClipPath.GetPath(i); | 626 const CFX_PathData* pPathData = ClipPath.GetPath(i).GetObject(); |
633 if (!pPathData) { | 627 if (!pPathData) { |
634 continue; | 628 continue; |
635 } | 629 } |
636 CFX_GraphStateData stroke_state; | 630 CFX_GraphStateData stroke_state; |
637 if (m_Options.m_Flags & RENDER_THINLINE) { | 631 if (m_Options.m_Flags & RENDER_THINLINE) { |
638 stroke_state.m_LineWidth = 0; | 632 stroke_state.m_LineWidth = 0; |
639 } | 633 } |
640 m_pDevice->DrawPath(pPathData, pObj2Device, &stroke_state, 0, 0xffff0000, | 634 m_pDevice->DrawPath(pPathData, pObj2Device, &stroke_state, 0, 0xffff0000, |
641 fill_mode); | 635 fill_mode); |
642 } | 636 } |
643 } | 637 } |
644 FX_BOOL CPDF_RenderStatus::SelectClipPath(const CPDF_PathObject* pPathObj, | 638 FX_BOOL CPDF_RenderStatus::SelectClipPath(const CPDF_PathObject* pPathObj, |
645 const CFX_Matrix* pObj2Device, | 639 const CFX_Matrix* pObj2Device, |
646 FX_BOOL bStroke) { | 640 FX_BOOL bStroke) { |
647 CFX_Matrix path_matrix = pPathObj->m_Matrix; | 641 CFX_Matrix path_matrix = pPathObj->m_Matrix; |
648 path_matrix.Concat(*pObj2Device); | 642 path_matrix.Concat(*pObj2Device); |
649 if (bStroke) { | 643 if (bStroke) { |
650 CFX_GraphStateData graphState(*pPathObj->m_GraphState); | 644 CFX_GraphStateData graphState(*pPathObj->m_GraphState.GetObject()); |
651 if (m_Options.m_Flags & RENDER_THINLINE) { | 645 if (m_Options.m_Flags & RENDER_THINLINE) { |
652 graphState.m_LineWidth = 0; | 646 graphState.m_LineWidth = 0; |
653 } | 647 } |
654 return m_pDevice->SetClip_PathStroke(pPathObj->m_Path, &path_matrix, | 648 return m_pDevice->SetClip_PathStroke(pPathObj->m_Path.GetObject(), |
655 &graphState); | 649 &path_matrix, &graphState); |
656 } | 650 } |
657 int fill_mode = pPathObj->m_FillType; | 651 int fill_mode = pPathObj->m_FillType; |
658 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { | 652 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { |
659 fill_mode |= FXFILL_NOPATHSMOOTH; | 653 fill_mode |= FXFILL_NOPATHSMOOTH; |
660 } | 654 } |
661 return m_pDevice->SetClip_PathFill(pPathObj->m_Path, &path_matrix, fill_mode); | 655 return m_pDevice->SetClip_PathFill(pPathObj->m_Path.GetObject(), &path_matrix, |
| 656 fill_mode); |
662 } | 657 } |
663 FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj, | 658 FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj, |
664 const CFX_Matrix* pObj2Device) { | 659 const CFX_Matrix* pObj2Device) { |
665 const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState; | 660 const CPDF_GeneralStateData* pGeneralState = |
| 661 pPageObj->m_GeneralState.GetObject(); |
666 int blend_type = | 662 int blend_type = |
667 pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL; | 663 pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL; |
668 if (blend_type == FXDIB_BLEND_UNSUPPORTED) { | 664 if (blend_type == FXDIB_BLEND_UNSUPPORTED) { |
669 return TRUE; | 665 return TRUE; |
670 } | 666 } |
671 CPDF_Dictionary* pSMaskDict = | 667 CPDF_Dictionary* pSMaskDict = |
672 pGeneralState ? ToDictionary(pGeneralState->m_pSoftMask) : nullptr; | 668 pGeneralState ? ToDictionary(pGeneralState->m_pSoftMask) : nullptr; |
673 if (pSMaskDict) { | 669 if (pSMaskDict) { |
674 if (pPageObj->IsImage() && | 670 if (pPageObj->IsImage() && |
675 pPageObj->AsImage()->m_pImage->GetDict()->KeyExist("SMask")) { | 671 pPageObj->AsImage()->m_pImage->GetDict()->KeyExist("SMask")) { |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
785 CPDF_TextObject* textobj = pPageObj->m_ClipPath.GetText(i); | 781 CPDF_TextObject* textobj = pPageObj->m_ClipPath.GetText(i); |
786 if (!textobj) { | 782 if (!textobj) { |
787 break; | 783 break; |
788 } | 784 } |
789 CFX_Matrix text_matrix; | 785 CFX_Matrix text_matrix; |
790 textobj->GetTextMatrix(&text_matrix); | 786 textobj->GetTextMatrix(&text_matrix); |
791 CPDF_TextRenderer::DrawTextPath( | 787 CPDF_TextRenderer::DrawTextPath( |
792 &text_device, textobj->m_nChars, textobj->m_pCharCodes, | 788 &text_device, textobj->m_nChars, textobj->m_pCharCodes, |
793 textobj->m_pCharPos, textobj->m_TextState.GetFont(), | 789 textobj->m_pCharPos, textobj->m_TextState.GetFont(), |
794 textobj->m_TextState.GetFontSize(), &text_matrix, &new_matrix, | 790 textobj->m_TextState.GetFontSize(), &text_matrix, &new_matrix, |
795 textobj->m_GraphState, (FX_ARGB)-1, 0, nullptr, 0); | 791 textobj->m_GraphState.GetObject(), (FX_ARGB)-1, 0, nullptr, 0); |
796 } | 792 } |
797 } | 793 } |
798 CPDF_RenderStatus bitmap_render; | 794 CPDF_RenderStatus bitmap_render; |
799 bitmap_render.Initialize(m_pContext, &bitmap_device, nullptr, m_pStopObj, | 795 bitmap_render.Initialize(m_pContext, &bitmap_device, nullptr, m_pStopObj, |
800 nullptr, nullptr, &m_Options, 0, m_bDropObjects, | 796 nullptr, nullptr, &m_Options, 0, m_bDropObjects, |
801 pFormResource, TRUE); | 797 pFormResource, TRUE); |
802 bitmap_render.ProcessObjectNoClip(pPageObj, &new_matrix); | 798 bitmap_render.ProcessObjectNoClip(pPageObj, &new_matrix); |
803 m_bStopped = bitmap_render.m_bStopped; | 799 m_bStopped = bitmap_render.m_bStopped; |
804 if (pSMaskDict) { | 800 if (pSMaskDict) { |
805 CFX_Matrix smask_matrix; | 801 CFX_Matrix smask_matrix; |
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1272 m_pContext->GetBackground(m_pBitmapDevice->GetBitmap(), m_pObject, pOptions, | 1268 m_pContext->GetBackground(m_pBitmapDevice->GetBitmap(), m_pObject, pOptions, |
1273 &m_Matrix); | 1269 &m_Matrix); |
1274 return TRUE; | 1270 return TRUE; |
1275 } | 1271 } |
1276 void CPDF_ScaledRenderBuffer::OutputToDevice() { | 1272 void CPDF_ScaledRenderBuffer::OutputToDevice() { |
1277 if (m_pBitmapDevice) { | 1273 if (m_pBitmapDevice) { |
1278 m_pDevice->StretchDIBits(m_pBitmapDevice->GetBitmap(), m_Rect.left, | 1274 m_pDevice->StretchDIBits(m_pBitmapDevice->GetBitmap(), m_Rect.left, |
1279 m_Rect.top, m_Rect.Width(), m_Rect.Height()); | 1275 m_Rect.top, m_Rect.Width(), m_Rect.Height()); |
1280 } | 1276 } |
1281 } | 1277 } |
OLD | NEW |