1e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// found in the LICENSE file. 4e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 5e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 7e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "../../include/pdfwindow/PDFWindow.h" 8e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "../../include/pdfwindow/PWL_Wnd.h" 9e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "../../include/pdfwindow/PWL_Utils.h" 10e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "../../include/pdfwindow/PWL_Icon.h" 11e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 12e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001) 13e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define IsFloatBigger(fa,fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb))) 14e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define IsFloatSmaller(fa,fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb))) 15e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define IsFloatEqual(fa,fb) IsFloatZero((fa)-(fb)) 16e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 17e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov/* ---------------------------- CPWL_Utils ------------------------------ */ 18e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 19e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAppStreamFromArray(const CPWL_PathData* pPathData, FX_INT32 nCount) 20e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 21e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf csAP; 22e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 23e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (FX_INT32 i=0; i<nCount; i++) 24e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 25e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (pPathData[i].type) 26e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 27e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWLPT_MOVETO: 28e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pPathData[i].point.x << " " << pPathData[i].point.y << " m\n"; 29e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 30e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWLPT_LINETO: 31e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pPathData[i].point.x << " " << pPathData[i].point.y << " l\n"; 32e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 33e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWLPT_BEZIERTO: 34e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pPathData[i].point.x << " " << pPathData[i].point.y << " " 35e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pPathData[i+1].point.x << " " << pPathData[i+1].point.y << " " 36e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pPathData[i+2].point.x << " " << pPathData[i+2].point.y << " c\n"; 37e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 38e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov i += 2; 39e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 40e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov default: 41e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 42e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 43e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 44e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 45e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return csAP.GetByteString(); 46e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 47e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 48e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetPathDataFromArray(CFX_PathData& path, const CPWL_PathData* pPathData, FX_INT32 nCount) 49e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 50e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPointCount(nCount); 51e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 52e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (FX_INT32 i=0; i<nCount; i++) 53e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 54e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (pPathData[i].type) 55e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 56e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWLPT_MOVETO: 57e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(i, pPathData[i].point.x, pPathData[i].point.y, FXPT_MOVETO); 58e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 59e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWLPT_LINETO: 60e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(i, pPathData[i].point.x, pPathData[i].point.y, FXPT_LINETO); 61e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 62e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWLPT_BEZIERTO: 63e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(i, pPathData[i].point.x, pPathData[i].point.y, FXPT_BEZIERTO); 64e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 65e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov default: 66e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 67e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 68e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 69e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 70e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 71e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 72e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCPDF_Rect CPWL_Utils::MaxRect(const CPDF_Rect & rect1,const CPDF_Rect & rect2) 73e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 74e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect rcRet; 75e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 76e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcRet.left = PWL_MIN(rect1.left,rect2.left); 77e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcRet.bottom = PWL_MIN(rect1.bottom,rect2.bottom); 78e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcRet.right = PWL_MAX(rect1.right,rect2.right); 79e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcRet.top = PWL_MAX(rect1.top,rect2.top); 80e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 81e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return rcRet; 82e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 83e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 84e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCPDF_Rect CPWL_Utils::OffsetRect(const CPDF_Rect & rect,FX_FLOAT x,FX_FLOAT y) 85e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 86e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return CPDF_Rect(rect.left + x,rect.bottom + y, 87e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rect.right + x,rect.top + y); 88e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 89e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 90e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovFX_BOOL CPWL_Utils::ContainsRect(const CPDF_Rect& rcParent, const CPDF_Rect& rcChild) 91e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 92e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return rcChild.left >= rcParent.left && rcChild.bottom >= rcParent.bottom && 93e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcChild.right <= rcParent.right && rcChild.top <= rcParent.top; 94e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 95e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 96e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovFX_BOOL CPWL_Utils::IntersectRect(const CPDF_Rect& rect1, const CPDF_Rect& rect2) 97e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 98e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT left = rect1.left > rect2.left ? rect1.left : rect2.left; 99e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT right = rect1.right < rect2.right ? rect1.right : rect2.right; 100e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT bottom = rect1.bottom > rect2.bottom ? rect1.bottom : rect2.bottom; 101e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT top = rect1.top < rect2.top ? rect1.top : rect2.top; 102e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 103e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return left < right && bottom < top; 104e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 105e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 106e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCPDF_Point CPWL_Utils::OffsetPoint(const CPDF_Point& point,FX_FLOAT x,FX_FLOAT y) 107e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 108e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return CPDF_Point(point.x + x,point.y + y); 109e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 110e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 111e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCPVT_WordRange CPWL_Utils::OverlapWordRange(const CPVT_WordRange & wr1, const CPVT_WordRange & wr2) 112e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 113e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_WordRange wrRet; 114e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 115e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (wr2.EndPos.WordCmp(wr1.BeginPos) < 0 || wr2.BeginPos.WordCmp(wr1.EndPos) > 0) return wrRet; 116e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (wr1.EndPos.WordCmp(wr2.BeginPos) < 0 || wr1.BeginPos.WordCmp(wr2.EndPos) > 0) return wrRet; 117e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 118e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (wr1.BeginPos.WordCmp(wr2.BeginPos) < 0) 119e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 120e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov wrRet.BeginPos = wr2.BeginPos; 121e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 122e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 123e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 124e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov wrRet.BeginPos = wr1.BeginPos; 125e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 126e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 127e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (wr1.EndPos.WordCmp(wr2.EndPos) < 0) 128e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 129e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov wrRet.EndPos = wr1.EndPos; 130e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 131e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 132e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 133e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov wrRet.EndPos = wr2.EndPos; 134e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 135e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 136e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return wrRet; 137e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 138e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 139e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAP_Check(const CPDF_Rect & crBBox) 140e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 141e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf csAP; 142e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 143e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 144e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 145e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 146e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const FX_INT32 num = 8; 147e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 148e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point pts[num*3] = 149e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 150e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov //1 151e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.28f, 0.52f), 152e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.27f, 0.48f), 153e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.29f, 0.40f), 154e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 155e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov //2 156e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.30f, 0.33f), 157e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.31f, 0.29f), 158e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.31f, 0.28f), 159e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 160e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov //3 161e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.39f, 0.28f), 162e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.49f, 0.29f), 163e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.77f, 0.67f), 164e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 165e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov //4 166e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.76f, 0.68f), 167e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.78f, 0.69f), 168e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.76f, 0.75f), 169e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 170e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov //5 171e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.76f, 0.75f), 172e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.73f, 0.80f), 173e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.68f, 0.75f), 174e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 175e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov //6 176e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.68f, 0.74f), 177e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.68f, 0.74f), 178e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.44f, 0.47f), 179e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 180e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov //7 181e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.43f, 0.47f), 182e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.40f, 0.47f), 183e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.41f, 0.58f), 184e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 185e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov //8 186e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.40f, 0.60f), 187e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.28f, 0.66f), 188e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point(0.30f, 0.56f) 189e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 190e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 191e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (FX_INT32 j=0; j<num*3; j++) 192e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 193e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pts[j].x *= fWidth; 194e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pts[j].x += crBBox.left; 195e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 196e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pts[j].y *= fHeight; 197e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pts[j].y += crBBox.bottom; 198e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 199e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 200e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pts[0].x << " " << pts[0].y << " m\n"; 201e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 202e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (FX_INT32 i=0; i<num; i++) 203e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 204e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nCur = i*3; 205e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 n1 = i*3 + 1; 206e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 n2 = i*3 + 2; 207e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nNext = (i < num-1 ? (i+1)*3 : 0); 208e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 209e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT px1 = pts[n1].x - pts[nCur].x; 210e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT py1 = pts[n1].y - pts[nCur].y; 211e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT px2 = pts[n2].x - pts[nNext].x; 212e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT py2 = pts[n2].y - pts[nNext].y; 213e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 214e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pts[nCur].x + px1 * PWL_BEZIER << " " << pts[nCur].y + py1 * PWL_BEZIER << " " 215e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pts[nNext].x + px2 * PWL_BEZIER << " " << pts[nNext].y + py2 * PWL_BEZIER << " " 216e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pts[nNext].x << " " << pts[nNext].y << " c\n"; 217e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 218e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 219e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return csAP.GetByteString(); 220e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 221e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 222e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAP_Circle(const CPDF_Rect & crBBox) 223e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 224e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf csAP; 225e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 226e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 227e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 228e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 229e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point pt1(crBBox.left,crBBox.bottom + fHeight / 2); 230e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point pt2(crBBox.left + fWidth / 2,crBBox.top); 231e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point pt3(crBBox.right,crBBox.bottom + fHeight / 2); 232e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point pt4(crBBox.left + fWidth / 2,crBBox.bottom); 233e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 234e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt1.x << " " << pt1.y << " m\n"; 235e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 236e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT px = pt2.x - pt1.x; 237e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT py = pt2.y - pt1.y; 238e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 239e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt1.x << " " << pt1.y + py * PWL_BEZIER << " " 240e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pt2.x - px * PWL_BEZIER << " " << pt2.y << " " 241e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pt2.x << " " << pt2.y << " c\n"; 242e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 243e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov px = pt3.x - pt2.x; 244e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov py = pt2.y - pt3.y; 245e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 246e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt2.x + px * PWL_BEZIER << " " << pt2.y << " " 247e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pt3.x << " " << pt3.y + py * PWL_BEZIER << " " 248e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pt3.x << " " << pt3.y << " c\n"; 249e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 250e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov px = pt3.x - pt4.x; 251e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov py = pt3.y - pt4.y; 252e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 253e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt3.x << " " << pt3.y - py * PWL_BEZIER << " " 254e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pt4.x + px * PWL_BEZIER << " " << pt4.y << " " 255e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pt4.x << " " << pt4.y << " c\n"; 256e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 257e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov px = pt4.x - pt1.x; 258e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov py = pt1.y - pt4.y; 259e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 260e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt4.x - px * PWL_BEZIER << " " << pt4.y << " " 261e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pt1.x << " " << pt1.y - py * PWL_BEZIER << " " 262e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pt1.x << " " << pt1.y << " c\n"; 263e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 264e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return csAP.GetByteString(); 265e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 266e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 267e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAP_Cross(const CPDF_Rect & crBBox) 268e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 269e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf csAP; 270e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 271e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << crBBox.left << " " << crBBox.top << " m\n"; 272e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << crBBox.right << " " << crBBox.bottom << " l\n"; 273e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << crBBox.left << " " << crBBox.bottom << " m\n"; 274e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << crBBox.right << " " << crBBox.top << " l\n"; 275e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 276e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return csAP.GetByteString(); 277e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 278e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 279e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAP_Diamond(const CPDF_Rect & crBBox) 280e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 281e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf csAP; 282e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 283e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 284e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 285e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 286e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point pt1(crBBox.left,crBBox.bottom + fHeight / 2); 287e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point pt2(crBBox.left + fWidth / 2,crBBox.top); 288e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point pt3(crBBox.right,crBBox.bottom + fHeight / 2); 289e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point pt4(crBBox.left + fWidth / 2,crBBox.bottom); 290e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 291e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt1.x << " " << pt1.y << " m\n"; 292e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt2.x << " " << pt2.y << " l\n"; 293e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt3.x << " " << pt3.y << " l\n"; 294e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt4.x << " " << pt4.y << " l\n"; 295e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt1.x << " " << pt1.y << " l\n"; 296e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 297e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return csAP.GetByteString(); 298e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 299e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 300e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAP_Square(const CPDF_Rect & crBBox) 301e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 302e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf csAP; 303e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 304e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << crBBox.left << " " << crBBox.top << " m\n"; 305e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << crBBox.right << " " << crBBox.top << " l\n"; 306e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << crBBox.right << " " << crBBox.bottom << " l\n"; 307e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << crBBox.left << " " << crBBox.bottom << " l\n"; 308e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << crBBox.left << " " << crBBox.top << " l\n"; 309e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 310e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return csAP.GetByteString(); 311e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 312e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 313e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAP_Star(const CPDF_Rect & crBBox) 314e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 315e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf csAP; 316e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 317e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fRadius = (crBBox.top - crBBox.bottom)/(1+(FX_FLOAT)cos(PWL_PI/5.0f)); 318e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point ptCenter = CPDF_Point((crBBox.left + crBBox.right) / 2.0f,(crBBox.top + crBBox.bottom) / 2.0f); 319e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 320e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT px[5],py[5]; 321e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 322e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fAngel = PWL_PI/10.0f; 323e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 324e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (FX_INT32 i=0; i<5; i++) 325e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 326e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov px[i] = ptCenter.x + fRadius * (FX_FLOAT)cos(fAngel); 327e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov py[i] = ptCenter.y + fRadius * (FX_FLOAT)sin(fAngel); 328e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 329e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fAngel += PWL_PI * 2 / 5.0f; 330e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 331e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 332e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << px[0] << " " << py[0] << " m\n"; 333e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 334e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nNext = 0; 335e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (FX_INT32 j=0; j<5; j++) 336e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 337e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov nNext += 2; 338e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (nNext >= 5) nNext -= 5; 339e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << px[nNext] << " " << py[nNext] << " l\n"; 340e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 341e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 342e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return csAP.GetByteString(); 343e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 344e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 345e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAP_HalfCircle(const CPDF_Rect & crBBox,FX_FLOAT fRotate) 346e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 347e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf csAP; 348e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 349e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 350e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 351e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 352e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point pt1(-fWidth/2,0); 353e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point pt2(0,fHeight/2); 354e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point pt3(fWidth/2,0); 355e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 356e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT px,py; 357e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 358e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << cos(fRotate) << " " << sin(fRotate) << " " << -sin(fRotate) << " " << cos(fRotate) << " " 359e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << crBBox.left + fWidth / 2 << " " << crBBox.bottom + fHeight / 2 << " cm\n"; 360e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 361e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 362e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt1.x << " " << pt1.y << " m\n"; 363e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 364e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov px = pt2.x - pt1.x; 365e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov py = pt2.y - pt1.y; 366e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 367e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt1.x << " " << pt1.y + py * PWL_BEZIER << " " 368e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pt2.x - px * PWL_BEZIER << " " << pt2.y << " " 369e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pt2.x << " " << pt2.y << " c\n"; 370e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 371e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov px = pt3.x - pt2.x; 372e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov py = pt2.y - pt3.y; 373e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 374e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov csAP << pt2.x + px * PWL_BEZIER << " " << pt2.y << " " 375e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pt3.x << " " << pt3.y + py * PWL_BEZIER << " " 376e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << pt3.x << " " << pt3.y << " c\n"; 377e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 378e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return csAP.GetByteString(); 379e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 380e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 381e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 382e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCPDF_Rect CPWL_Utils::InflateRect(const CPDF_Rect & rcRect, FX_FLOAT fSize) 383e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 384e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (rcRect.IsEmpty()) return rcRect; 385e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 386e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect rcNew(rcRect.left - fSize, 387e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcRect.bottom - fSize, 388e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcRect.right + fSize, 389e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcRect.top + fSize); 390e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcNew.Normalize(); 391e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return rcNew; 392e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 393e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 394e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCPDF_Rect CPWL_Utils::DeflateRect(const CPDF_Rect & rcRect, FX_FLOAT fSize) 395e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 396e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (rcRect.IsEmpty()) return rcRect; 397e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 398e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect rcNew(rcRect.left + fSize, 399e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcRect.bottom + fSize, 400e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcRect.right - fSize, 401e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcRect.top - fSize); 402e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcNew.Normalize(); 403e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return rcNew; 404e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 405e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 406e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCPDF_Rect CPWL_Utils::ScaleRect(const CPDF_Rect & rcRect,FX_FLOAT fScale) 407e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 408e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHalfWidth = (rcRect.right - rcRect.left) / 2.0f; 409e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHalfHeight = (rcRect.top - rcRect.bottom) / 2.0f; 410e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 411e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point ptCenter = CPDF_Point((rcRect.left + rcRect.right) / 2,(rcRect.top + rcRect.bottom) / 2); 412e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 413e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return CPDF_Rect(ptCenter.x - fHalfWidth * fScale, 414e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov ptCenter.y - fHalfHeight * fScale, 415e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov ptCenter.x + fHalfWidth * fScale, 416e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov ptCenter.y + fHalfHeight * fScale); 417e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 418e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 419e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetRectFillAppStream(const CPDF_Rect & rect,const CPWL_Color & color) 420e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 421e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sAppStream; 422e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 423e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteString sColor = GetColorAppStream(color,TRUE); 424e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 425e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 426e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << sColor; 427e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << rect.left << " " << rect.bottom << " " 428e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << rect.right - rect.left << " " << rect.top - rect.bottom << " re f\nQ\n"; 429e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 430e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 431e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAppStream.GetByteString(); 432e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 433e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 434e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetCircleFillAppStream(const CPDF_Rect & rect,const CPWL_Color & color) 435e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 436e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sAppStream; 437e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 438e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteString sColor = GetColorAppStream(color,TRUE); 439e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 440e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 441e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << sColor << CPWL_Utils::GetAP_Circle(rect) << "f\nQ\n"; 442e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 443e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 444e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAppStream.GetByteString(); 445e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 446e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 447e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCPDF_Rect CPWL_Utils::GetCenterSquare(const CPDF_Rect & rect) 448e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 449e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = rect.right - rect.left; 450e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = rect.top - rect.bottom; 451e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 452e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fCenterX = (rect.left + rect.right)/2.0f; 453e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fCenterY = (rect.top + rect.bottom)/2.0f; 454e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 455e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fRadius = (fWidth > fHeight) ? fHeight / 2 : fWidth / 2; 456e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 457e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return CPDF_Rect(fCenterX - fRadius,fCenterY - fRadius,fCenterX + fRadius,fCenterY + fRadius); 458e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 459e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 460e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetEditAppStream(IFX_Edit* pEdit, const CPDF_Point & ptOffset, const CPVT_WordRange * pRange, 461e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL bContinuous, FX_WORD SubWord) 462e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 463e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return IFX_Edit::GetEditAppearanceStream(pEdit,ptOffset,pRange,bContinuous,SubWord); 464e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 465e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 466e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetEditSelAppStream(IFX_Edit* pEdit, const CPDF_Point & ptOffset, 467e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPVT_WordRange * pRange) 468e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 469e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return IFX_Edit::GetSelectAppearanceStream(pEdit,ptOffset,pRange); 470e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 471e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 472e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovstatic CFX_ByteString GetSquigglyAppearanceStream(FX_FLOAT fStartX, FX_FLOAT fEndX, FX_FLOAT fY, FX_FLOAT fStep) 473e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 474e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sRet; 475e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 476e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet << "0 w\n" << fStartX << " " << fY << " m\n"; 477e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 478e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fx; 479e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 i; 480e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 481e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (i=1,fx=fStartX+fStep; fx<fEndX; fx+=fStep,i++) 482e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 483e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet << fx << " " << fY + (i&1)*fStep << " l\n"; 484e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 485e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 486e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet << "S\n"; 487e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 488e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sRet.GetByteString(); 489e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 490e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 491e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovstatic CFX_ByteString GetWordSpellCheckAppearanceStream(IFX_Edit_Iterator* pIterator, const CPDF_Point & ptOffset, 492e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPVT_WordRange & wrWord) 493e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 494e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sRet; 495e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 496e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fStartX = 0.0f; 497e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fEndX = 0.0f; 498e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fY = 0.0f; 499e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fStep = 0.0f; 500e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 501e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL bBreak = FALSE; 502e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 503e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIterator) 504e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 505e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pIterator->SetAt(wrWord.BeginPos); 506e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 507e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov do 508e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 509e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_WordPlace place = pIterator->GetAt(); 510e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 511e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_Line line; 512e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIterator->GetLine(line)) 513e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 514e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fY = line.ptLine.y; 515e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fStep = (line.fLineAscent - line.fLineDescent) / 16.0f; 516e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 517e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 518e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (place.LineCmp(wrWord.BeginPos) == 0) 519e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 520e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pIterator->SetAt(wrWord.BeginPos); 521e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_Word word; 522e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIterator->GetWord(word)) 523e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 524e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fStartX = word.ptWord.x; 525e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 526e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 527e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 528e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 529e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fStartX = line.ptLine.x; 530e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 531e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 532e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (place.LineCmp(wrWord.EndPos) == 0) 533e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 534e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pIterator->SetAt(wrWord.EndPos); 535e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_Word word; 536e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIterator->GetWord(word)) 537e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 538e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fEndX = word.ptWord.x + word.fWidth; 539e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 540e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 541e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov bBreak = TRUE; 542e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 543e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 544e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 545e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fEndX = line.ptLine.x + line.fLineWidth; 546e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 547e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 548e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet << GetSquigglyAppearanceStream(fStartX + ptOffset.x, fEndX + ptOffset.x, fY + ptOffset.y,fStep); 549e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 550e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (bBreak) break; 551e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 552e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov while (pIterator->NextLine()); 553e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 554e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 555e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sRet.GetByteString(); 556e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 557e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 558e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetSpellCheckAppStream(IFX_Edit* pEdit, IPWL_SpellCheck* pSpellCheck, const CPDF_Point & ptOffset, 559e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPVT_WordRange * pRange) 560e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 561e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov ASSERT(pEdit != NULL); 562e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov ASSERT(pSpellCheck != NULL); 563e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 564e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sRet; 565e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 566e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pRange && pRange->IsExist()) 567e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 568e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) 569e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 570e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pIterator->SetAt(pRange->BeginPos); 571e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 572e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL bLatinWord = FALSE; 573e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_WordPlace wpWordStart; 574e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteString sWord; 575e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 576e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_WordPlace oldplace; 577e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov while (pIterator->NextWord()) 578e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 579e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_WordPlace place = pIterator->GetAt(); 580e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pRange && place.WordCmp(pRange->EndPos) > 0) break; 581e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 582e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_Word word; 583e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIterator->GetWord(word)) 584e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 585e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (FX_EDIT_ISLATINWORD(word.Word)) 586e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 587e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (!bLatinWord) 588e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 589e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov wpWordStart = place; 590e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov bLatinWord = TRUE; 591e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 592e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 593e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sWord += (char)word.Word; 594e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov oldplace = place; 595e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 596e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 597e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 598e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (bLatinWord) 599e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 600e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (!pSpellCheck->CheckWord(sWord)) 601e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 602e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet << GetWordSpellCheckAppearanceStream(pIterator,ptOffset,CPVT_WordRange(wpWordStart,oldplace)); 603e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pIterator->SetAt(place); 604e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 605e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov bLatinWord = FALSE; 606e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 607e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 608e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sWord.Empty(); 609e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 610e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 611e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 612e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 613e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (bLatinWord) 614e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 615e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (!pSpellCheck->CheckWord(sWord)) 616e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet << GetWordSpellCheckAppearanceStream(pIterator,ptOffset,CPVT_WordRange(wpWordStart,oldplace)); 617e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov bLatinWord = FALSE; 618e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sWord.Empty(); 619e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 620e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 621e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 622e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 623e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (bLatinWord) 624e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 625e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (!pSpellCheck->CheckWord(sWord)) 626e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet << GetWordSpellCheckAppearanceStream(pIterator,ptOffset,CPVT_WordRange(wpWordStart,oldplace)); 627e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 628e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov bLatinWord = FALSE; 629e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sWord.Empty(); 630e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 631e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 632e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 633e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 634e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sRet.GetByteString(); 635e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 636e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 637e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetTextAppStream(const CPDF_Rect & rcBBox,IFX_Edit_FontMap * pFontMap, 638e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CFX_WideString & sText, FX_INT32 nAlignmentH, FX_INT32 nAlignmentV, 639e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fFontSize, FX_BOOL bMultiLine, FX_BOOL bAutoReturn, const CPWL_Color & crText) 640e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 641e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sRet; 642e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 643e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (IFX_Edit * pEdit = IFX_Edit::NewEdit()) 644e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 645e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetFontMap(pFontMap); 646e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetPlateRect(rcBBox); 647e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetAlignmentH(nAlignmentH); 648e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetAlignmentV(nAlignmentV); 649e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetMultiLine(bMultiLine); 650e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetAutoReturn(bAutoReturn); 651e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (IsFloatZero(fFontSize)) 652e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetAutoFontSize(TRUE); 653e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 654e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetFontSize(fFontSize); 655e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 656e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->Initialize(); 657e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetText(sText.c_str()); 658e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 659e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(pEdit, CPDF_Point(0.0f,0.0f)); 660e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sEdit.GetLength() > 0) 661e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 662e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit << "ET\n"; 663e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 664e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IFX_Edit::DelEdit(pEdit); 665e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 666e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 667e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sRet.GetByteString(); 668e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 669e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 670e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetPushButtonAppStream(const CPDF_Rect & rcBBox, 671e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IFX_Edit_FontMap * pFontMap, 672e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Stream * pIconStream, 673e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_IconFit & IconFit, 674e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CFX_WideString & sLabel, 675e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPWL_Color & crText, 676e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fFontSize, 677e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nLayOut) 678e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 679e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const FX_FLOAT fAutoFontScale = 1.0f / 3.0f; 680e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 681e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (IFX_Edit * pEdit = IFX_Edit::NewEdit()) 682e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 683e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetFontMap(pFontMap); 684e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetAlignmentH(1); 685e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetAlignmentV(1); 686e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetMultiLine(FALSE); 687e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetAutoReturn(FALSE); 688e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (IsFloatZero(fFontSize)) 689e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetAutoFontSize(TRUE); 690e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 691e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetFontSize(fFontSize); 692e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 693e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->Initialize(); 694e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetText(sLabel.c_str()); 695e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 696e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect rcLabelContent = pEdit->GetContentRect(); 697e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Icon Icon; 698e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PWL_CREATEPARAM cp; 699e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov cp.dwFlags = PWS_VISIBLE; 700e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov Icon.Create(cp); 701e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov Icon.SetIconFit(&IconFit); 702e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov Icon.SetPDFStream(pIconStream); 703e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 704e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect rcLabel = CPDF_Rect(0,0,0,0); 705e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect rcIcon = CPDF_Rect(0,0,0,0); 706e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = 0.0f; 707e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = 0.0f; 708e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 709e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (nLayOut) 710e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 711e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PPBL_LABEL: 712e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = rcBBox; 713e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(0,0,0,0); 714e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 715e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PPBL_ICON: 716e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = rcBBox; 717e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = CPDF_Rect(0,0,0,0); 718e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 719e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PPBL_ICONTOPLABELBOTTOM: 720e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 721e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIconStream) 722e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 723e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (IsFloatZero(fFontSize)) 724e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 725e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fHeight = rcBBox.top - rcBBox.bottom; 726e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.right,rcBBox.bottom + fHeight * fAutoFontScale); 727e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(rcBBox.left,rcLabel.top,rcBBox.right,rcBBox.top); 728e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 729e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 730e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 731e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fHeight = rcLabelContent.Height(); 732e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 733e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (rcBBox.bottom + fHeight > rcBBox.top) 734e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 735e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(0,0,0,0); 736e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = rcBBox; 737e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 738e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 739e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 740e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.right,rcBBox.bottom + fHeight); 741e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(rcBBox.left,rcLabel.top,rcBBox.right,rcBBox.top); 742e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 743e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 744e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 745e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 746e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 747e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = rcBBox; 748e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(0,0,0,0); 749e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 750e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 751e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 752e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PPBL_LABELTOPICONBOTTOM: 753e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 754e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIconStream) 755e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 756e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (IsFloatZero(fFontSize)) 757e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 758e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fHeight = rcBBox.top - rcBBox.bottom; 759e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = CPDF_Rect(rcBBox.left,rcBBox.top - fHeight * fAutoFontScale ,rcBBox.right,rcBBox.top); 760e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.right,rcLabel.bottom); 761e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 762e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 763e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 764e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fHeight = rcLabelContent.Height(); 765e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 766e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (rcBBox.bottom + fHeight > rcBBox.top) 767e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 768e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(0,0,0,0); 769e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = rcBBox; 770e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 771e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 772e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 773e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = CPDF_Rect(rcBBox.left,rcBBox.top - fHeight,rcBBox.right,rcBBox.top); 774e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.right,rcLabel.bottom); 775e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 776e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 777e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 778e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 779e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 780e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = rcBBox; 781e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(0,0,0,0); 782e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 783e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 784e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 785e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PPBL_ICONLEFTLABELRIGHT: 786e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 787e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIconStream) 788e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 789e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (IsFloatZero(fFontSize)) 790e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 791e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fWidth = rcBBox.right - rcBBox.left; 792e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = CPDF_Rect(rcBBox.right - fWidth * fAutoFontScale,rcBBox.bottom,rcBBox.right,rcBBox.top); 793e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcLabel.left,rcBBox.top); 794e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 795e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (rcLabelContent.Width() < fWidth * fAutoFontScale) 796e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 797e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 798e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 799e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 800e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (rcLabelContent.Width() < fWidth) 801e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 802e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = CPDF_Rect(rcBBox.right - rcLabelContent.Width(),rcBBox.bottom,rcBBox.right,rcBBox.top); 803e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcLabel.left,rcBBox.top); 804e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 805e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 806e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 807e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = rcBBox; 808e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(0,0,0,0); 809e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 810e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 811e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 812e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 813e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 814e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fWidth = rcLabelContent.Width(); 815e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 816e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (rcBBox.left + fWidth > rcBBox.right) 817e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 818e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = rcBBox; 819e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(0,0,0,0); 820e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 821e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 822e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 823e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = CPDF_Rect(rcBBox.right - fWidth,rcBBox.bottom,rcBBox.right,rcBBox.top); 824e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcLabel.left,rcBBox.top); 825e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 826e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 827e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 828e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 829e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 830e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = rcBBox; 831e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(0,0,0,0); 832e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 833e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 834e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 835e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PPBL_LABELLEFTICONRIGHT: 836e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 837e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIconStream) 838e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 839e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (IsFloatZero(fFontSize)) 840e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 841e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fWidth = rcBBox.right - rcBBox.left; 842e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.left + fWidth * fAutoFontScale,rcBBox.top); 843e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(rcLabel.right,rcBBox.bottom,rcBBox.right,rcBBox.top); 844e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 845e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (rcLabelContent.Width() < fWidth * fAutoFontScale) 846e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 847e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 848e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 849e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 850e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (rcLabelContent.Width() < fWidth) 851e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 852e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.left + rcLabelContent.Width(),rcBBox.top); 853e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(rcLabel.right,rcBBox.bottom,rcBBox.right,rcBBox.top); 854e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 855e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 856e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 857e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = rcBBox; 858e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(0,0,0,0); 859e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 860e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 861e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 862e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 863e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 864e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fWidth = rcLabelContent.Width(); 865e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 866e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (rcBBox.left + fWidth > rcBBox.right) 867e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 868e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = rcBBox; 869e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(0,0,0,0); 870e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 871e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 872e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 873e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.left + fWidth,rcBBox.top); 874e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(rcLabel.right,rcBBox.bottom,rcBBox.right,rcBBox.top); 875e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 876e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 877e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 878e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 879e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 880e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = rcBBox; 881e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = CPDF_Rect(0,0,0,0); 882e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 883e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 884e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 885e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PPBL_LABELOVERICON: 886e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcLabel = rcBBox; 887e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcIcon = rcBBox; 888e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 889e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 890e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 891e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sAppStream,sTemp; 892e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 893e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (!rcIcon.IsEmpty()) 894e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 895e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov Icon.Move(rcIcon, FALSE, FALSE); 896e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sTemp << Icon.GetImageAppStream(); 897e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 898e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 899e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov Icon.Destroy(); 900e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 901e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (!rcLabel.IsEmpty()) 902e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 903e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pEdit->SetPlateRect(rcLabel); 904e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(pEdit,CPDF_Point(0.0f,0.0f)); 905e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sEdit.GetLength() > 0) 906e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 907e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sTemp << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit << "ET\n"; 908e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 909e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 910e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 911e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IFX_Edit::DelEdit(pEdit); 912e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 913e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sTemp.GetSize() > 0) 914e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 915e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << rcBBox.left << " " << rcBBox.bottom << " " 916e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << rcBBox.right - rcBBox.left << " " << rcBBox.top - rcBBox.bottom << " re W n\n"; 917e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << sTemp << "Q\n"; 918e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 919e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 920e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAppStream.GetByteString(); 921e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 922e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 923e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return ""; 924e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 925e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 926e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetColorAppStream(const CPWL_Color & color,const FX_BOOL & bFillOrStroke) 927e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 928e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sColorStream; 929e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 930e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (color.nColorType) 931e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 932e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_RGB: 933e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColorStream << color.fColor1 << " " << color.fColor2 << " " << color.fColor3 << " " 934e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << (bFillOrStroke ? "rg" : "RG") << "\n"; 935e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 936e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_GRAY: 937e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColorStream << color.fColor1 << " " << (bFillOrStroke ? "g" : "G") << "\n"; 938e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 939e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_CMYK: 940e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColorStream << color.fColor1 << " " << color.fColor2 << " " << color.fColor3 << " " << color.fColor4 << " " 941e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << (bFillOrStroke ? "k" : "K") << "\n"; 942e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 943e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 944e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 945e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sColorStream.GetByteString(); 946e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 947e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 948e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetBorderAppStream(const CPDF_Rect & rect, FX_FLOAT fWidth, 949e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPWL_Color & color, const CPWL_Color & crLeftTop, const CPWL_Color & crRightBottom, 950e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nStyle, const CPWL_Dash & dash) 951e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 952e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sAppStream; 953e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteString sColor; 954e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 955e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fLeft = rect.left; 956e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fRight = rect.right; 957e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fTop = rect.top; 958e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fBottom = rect.bottom; 959e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 960e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (fWidth > 0.0f) 961e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 962e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHalfWidth = fWidth / 2.0f; 963e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 964e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n"; 965e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 966e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (nStyle) 967e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 968e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov default: 969e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_SOLID: 970e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(color,TRUE); 971e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 972e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 973e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << sColor; 974e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft << " " << fBottom << " " << fRight - fLeft << " " << fTop - fBottom << " re\n"; 975e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft + fWidth << " " << fBottom + fWidth << " " 976e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << fRight - fLeft - fWidth * 2 << " " << fTop - fBottom - fWidth * 2 << " re\n"; 977e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "f*\n"; 978e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 979e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 980e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_DASH: 981e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(color,FALSE); 982e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 983e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 984e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << sColor; 985e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fWidth << " w" << " [" << dash.nDash << " " << dash.nGap << "] " << dash.nPhase << " d\n"; 986e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft + fWidth / 2 << " " << fBottom + fWidth / 2 << " m\n"; 987e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft + fWidth / 2 << " " << fTop - fWidth / 2 << " l\n"; 988e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fRight - fWidth / 2 << " " << fTop - fWidth / 2 << " l\n"; 989e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fRight - fWidth / 2 << " " << fBottom + fWidth / 2 << " l\n"; 990e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft + fWidth / 2 << " " << fBottom + fWidth / 2 << " l S\n"; 991e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 992e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 993e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_BEVELED: 994e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_INSET: 995e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(crLeftTop,TRUE); 996e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 997e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 998e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << sColor; 999e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth << " m\n"; 1000e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft + fHalfWidth << " " << fTop - fHalfWidth << " l\n"; 1001e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fRight - fHalfWidth << " " << fTop - fHalfWidth << " l\n"; 1002e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fRight - fHalfWidth * 2 << " " << fTop - fHalfWidth * 2 << " l\n"; 1003e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft + fHalfWidth * 2 << " " << fTop - fHalfWidth * 2 << " l\n"; 1004e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft + fHalfWidth * 2 << " " << fBottom + fHalfWidth * 2 << " l f\n"; 1005e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1006e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1007e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(crRightBottom,TRUE); 1008e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 1009e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1010e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << sColor; 1011e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fRight - fHalfWidth << " " << fTop - fHalfWidth << " m\n"; 1012e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fRight - fHalfWidth << " " << fBottom + fHalfWidth << " l\n"; 1013e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth << " l\n"; 1014e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft + fHalfWidth * 2 << " " << fBottom + fHalfWidth * 2 << " l\n"; 1015e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fRight - fHalfWidth * 2 << " " << fBottom + fHalfWidth * 2 << " l\n"; 1016e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fRight - fHalfWidth * 2 << " " << fTop - fHalfWidth * 2 << " l f\n"; 1017e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1018e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1019e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(color,TRUE); 1020e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 1021e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1022e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << sColor; 1023e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft << " " << fBottom << " " << fRight - fLeft << " " << fTop - fBottom << " re\n"; 1024e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth << " " 1025e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << fRight - fLeft - fHalfWidth * 2 << " " << fTop - fBottom - fHalfWidth * 2 << " re f*\n"; 1026e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1027e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1028e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_UNDERLINED: 1029e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(color,FALSE); 1030e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 1031e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1032e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << sColor; 1033e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fWidth << " w\n"; 1034e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fLeft << " " << fBottom + fWidth / 2 << " m\n"; 1035e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << fRight << " " << fBottom + fWidth / 2 << " l S\n"; 1036e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1037e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1038e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1039e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1040e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "Q\n"; 1041e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1042e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1043e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAppStream.GetByteString(); 1044e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1045e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1046e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetCircleBorderAppStream(const CPDF_Rect & rect, FX_FLOAT fWidth, 1047e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPWL_Color & color, const CPWL_Color & crLeftTop, const CPWL_Color & crRightBottom, 1048e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nStyle, const CPWL_Dash & dash) 1049e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1050e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sAppStream; 1051e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteString sColor; 1052e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1053e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1054e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1055e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1056e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1057e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1058e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (fWidth > 0.0f) 1059e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1060e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n"; 1061e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1062e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (nStyle) 1063e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1064e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov default: 1065e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_SOLID: 1066e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_UNDERLINED: 1067e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1068e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(color,FALSE); 1069e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 1070e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1071e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << fWidth << " w\n" << sColor 1072e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << CPWL_Utils::GetAP_Circle(CPWL_Utils::DeflateRect(rect,fWidth / 2.0f)) 1073e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << " S\nQ\n"; 1074e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1075e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1076e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1077e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_DASH: 1078e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1079e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(color,FALSE); 1080e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 1081e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1082e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << fWidth << " w\n" 1083e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << "[" << dash.nDash << " " << dash.nGap << "] " << dash.nPhase << " d\n" 1084e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << sColor << CPWL_Utils::GetAP_Circle(CPWL_Utils::DeflateRect(rect,fWidth / 2.0f)) 1085e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << " S\nQ\n"; 1086e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1087e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1088e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1089e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_BEVELED: 1090e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1091e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHalfWidth = fWidth / 2.0f; 1092e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1093e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(color,FALSE); 1094e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 1095e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1096e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << fHalfWidth << " w\n" 1097e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << sColor << CPWL_Utils::GetAP_Circle(rect) 1098e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << " S\nQ\n"; 1099e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1100e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1101e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(crLeftTop,FALSE); 1102e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 1103e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1104e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << fHalfWidth << " w\n" 1105e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << sColor << CPWL_Utils::GetAP_HalfCircle(CPWL_Utils::DeflateRect(rect,fHalfWidth * 0.75f),PWL_PI/4.0f) 1106e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << " S\nQ\n"; 1107e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1108e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1109e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(crRightBottom,FALSE); 1110e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 1111e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1112e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << fHalfWidth << " w\n" 1113e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << sColor << CPWL_Utils::GetAP_HalfCircle(CPWL_Utils::DeflateRect(rect,fHalfWidth * 0.75f),PWL_PI*5/4.0f) 1114e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << " S\nQ\n"; 1115e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1116e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1117e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1118e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_INSET: 1119e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1120e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHalfWidth = fWidth / 2.0f; 1121e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1122e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(color,FALSE); 1123e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 1124e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1125e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << fHalfWidth << " w\n" 1126e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << sColor << CPWL_Utils::GetAP_Circle(rect) 1127e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << " S\nQ\n"; 1128e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1129e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1130e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(crLeftTop,FALSE); 1131e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 1132e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1133e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << fHalfWidth << " w\n" 1134e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << sColor << CPWL_Utils::GetAP_HalfCircle(CPWL_Utils::DeflateRect(rect,fHalfWidth * 0.75f),PWL_PI/4.0f) 1135e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << " S\nQ\n"; 1136e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1137e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1138e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sColor = CPWL_Utils::GetColorAppStream(crRightBottom,FALSE); 1139e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (sColor.GetLength() > 0) 1140e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1141e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << fHalfWidth << " w\n" 1142e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << sColor << CPWL_Utils::GetAP_HalfCircle(CPWL_Utils::DeflateRect(rect,fHalfWidth * 0.75f),PWL_PI*5/4.0f) 1143e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << " S\nQ\n"; 1144e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1145e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1146e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1147e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1148e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1149e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "Q\n"; 1150e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1151e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1152e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAppStream.GetByteString(); 1153e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1154e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1155e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCPWL_Color CPWL_Utils::SubstractColor(const CPWL_Color & sColor,FX_FLOAT fColorSub) 1156e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1157e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Color sRet; 1158e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.nColorType = sColor.nColorType; 1159e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1160e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (sColor.nColorType) 1161e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1162e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_TRANSPARENT: 1163e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.nColorType = COLORTYPE_RGB; 1164e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor1 = PWL_MAX(1 - fColorSub,0.0f); 1165e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor2 = PWL_MAX(1 - fColorSub,0.0f); 1166e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor3 = PWL_MAX(1 - fColorSub,0.0f); 1167e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1168e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_RGB: 1169e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_GRAY: 1170e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_CMYK: 1171e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor1 = PWL_MAX(sColor.fColor1 - fColorSub,0.0f); 1172e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor2 = PWL_MAX(sColor.fColor2 - fColorSub,0.0f); 1173e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor3 = PWL_MAX(sColor.fColor3 - fColorSub,0.0f); 1174e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor4 = PWL_MAX(sColor.fColor4 - fColorSub,0.0f); 1175e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1176e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1177e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1178e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sRet; 1179e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1180e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1181e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCPWL_Color CPWL_Utils::DevideColor(const CPWL_Color & sColor,FX_FLOAT fColorDevide) 1182e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1183e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Color sRet; 1184e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.nColorType = sColor.nColorType; 1185e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1186e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (sColor.nColorType) 1187e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1188e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_TRANSPARENT: 1189e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.nColorType = COLORTYPE_RGB; 1190e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor1 = 1 / fColorDevide; 1191e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor2 = 1 / fColorDevide; 1192e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor3 = 1 / fColorDevide; 1193e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1194e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_RGB: 1195e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_GRAY: 1196e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_CMYK: 1197e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet = sColor; 1198e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor1 /= fColorDevide; 1199e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor2 /= fColorDevide; 1200e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor3 /= fColorDevide; 1201e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sRet.fColor4 /= fColorDevide; 1202e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1203e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1204e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1205e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sRet; 1206e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1207e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1208e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAppStream_Check(const CPDF_Rect & rcBBox, const CPWL_Color & crText) 1209e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1210e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sAP; 1211e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText,TRUE) << CPWL_Utils::GetAP_Check(rcBBox) << "f\nQ\n"; 1212e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAP.GetByteString(); 1213e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1214e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1215e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAppStream_Circle(const CPDF_Rect & rcBBox, const CPWL_Color & crText) 1216e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1217e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sAP; 1218e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText,TRUE) << CPWL_Utils::GetAP_Circle(rcBBox) << "f\nQ\n"; 1219e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAP.GetByteString(); 1220e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1221e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1222e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAppStream_Cross(const CPDF_Rect & rcBBox, const CPWL_Color & crText) 1223e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1224e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sAP; 1225e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText,FALSE) << CPWL_Utils::GetAP_Cross(rcBBox) << "S\nQ\n"; 1226e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAP.GetByteString(); 1227e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1228e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1229e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAppStream_Diamond(const CPDF_Rect & rcBBox, const CPWL_Color & crText) 1230e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1231e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sAP; 1232e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAP << "q\n1 w\n" << CPWL_Utils::GetColorAppStream(crText,TRUE) << CPWL_Utils::GetAP_Diamond(rcBBox) << "f\nQ\n"; 1233e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAP.GetByteString(); 1234e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1235e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1236e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAppStream_Square(const CPDF_Rect & rcBBox, const CPWL_Color & crText) 1237e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1238e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sAP; 1239e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText,TRUE) << CPWL_Utils::GetAP_Square(rcBBox) << "f\nQ\n"; 1240e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAP.GetByteString(); 1241e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1242e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1243e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetAppStream_Star(const CPDF_Rect & rcBBox, const CPWL_Color & crText) 1244e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1245e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sAP; 1246e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText,TRUE) << CPWL_Utils::GetAP_Star(rcBBox) << "f\nQ\n"; 1247e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAP.GetByteString(); 1248e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1249e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1250e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetCheckBoxAppStream(const CPDF_Rect & rcBBox, 1251e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nStyle, 1252e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPWL_Color & crText) 1253e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1254e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect rcCenter = GetCenterSquare(rcBBox); 1255e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (nStyle) 1256e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1257e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov default: 1258e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PCS_CHECK: 1259e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return GetAppStream_Check(rcCenter,crText); 1260e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PCS_CIRCLE: 1261e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return GetAppStream_Circle(ScaleRect(rcCenter,2.0f/3.0f),crText); 1262e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PCS_CROSS: 1263e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return GetAppStream_Cross(rcCenter,crText); 1264e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PCS_DIAMOND: 1265e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return GetAppStream_Diamond(ScaleRect(rcCenter,2.0f/3.0f),crText); 1266e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PCS_SQUARE: 1267e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return GetAppStream_Square(ScaleRect(rcCenter,2.0f/3.0f),crText); 1268e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PCS_STAR: 1269e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return GetAppStream_Star(ScaleRect(rcCenter,2.0f/3.0f),crText); 1270e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1271e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1272e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1273e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetRadioButtonAppStream(const CPDF_Rect & rcBBox, 1274e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nStyle, 1275e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPWL_Color & crText) 1276e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1277e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect rcCenter = GetCenterSquare(rcBBox); 1278e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (nStyle) 1279e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1280e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov default: 1281e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PCS_CHECK: 1282e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return GetAppStream_Check(rcCenter,crText); 1283e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PCS_CIRCLE: 1284e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return GetAppStream_Circle(ScaleRect(rcCenter,1.0f/2.0f),crText); 1285e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PCS_CROSS: 1286e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return GetAppStream_Cross(rcCenter,crText); 1287e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PCS_DIAMOND: 1288e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return GetAppStream_Diamond(ScaleRect(rcCenter,2.0f/3.0f),crText); 1289e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PCS_SQUARE: 1290e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return GetAppStream_Square(ScaleRect(rcCenter,2.0f/3.0f),crText); 1291e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PCS_STAR: 1292e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return GetAppStream_Star(ScaleRect(rcCenter,2.0f/3.0f),crText); 1293e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1294e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1295e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1296e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetDropButtonAppStream(const CPDF_Rect & rcBBox) 1297e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1298e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteTextBuf sAppStream; 1299e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1300e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (!rcBBox.IsEmpty()) 1301e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1302e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_RGB,220.0f/255.0f,220.0f/255.0f,220.0f/255.0f),TRUE); 1303e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << rcBBox.left << " " << rcBBox.bottom << " " 1304e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << rcBBox.right - rcBBox.left << " " << rcBBox.top - rcBBox.bottom << " re f\n"; 1305e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "Q\n"; 1306e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1307e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << 1308e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Utils::GetBorderAppStream(rcBBox,2,CPWL_Color(COLORTYPE_GRAY,0),CPWL_Color(COLORTYPE_GRAY,1),CPWL_Color(COLORTYPE_GRAY,0.5),PBS_BEVELED,CPWL_Dash(3,0,0)) 1309e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov << "Q\n"; 1310e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1311e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point ptCenter = CPDF_Point((rcBBox.left + rcBBox.right)/2,(rcBBox.top + rcBBox.bottom)/2); 1312e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (IsFloatBigger(rcBBox.right - rcBBox.left,6) && IsFloatBigger(rcBBox.top - rcBBox.bottom,6)) 1313e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1314e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "q\n" << " 0 g\n"; 1315e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " m\n"; 1316e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << ptCenter.x + 3 << " " << ptCenter.y + 1.5f << " l\n"; 1317e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << ptCenter.x << " " << ptCenter.y - 1.5f << " l\n"; 1318e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " l f\n"; 1319e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream << "Q\n"; 1320e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1321e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1322e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1323e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAppStream.GetByteString(); 1324e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1325e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1326e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::ConvertCMYK2GRAY(FX_FLOAT dC,FX_FLOAT dM,FX_FLOAT dY,FX_FLOAT dK,FX_FLOAT &dGray) 1327e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1328e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (dC<0 || dC>1 || dM<0 || dM>1 || dY < 0 || dY >1 || dK < 0 || dK >1) 1329e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return; 1330e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dGray = 1.0f - FX_MIN(1.0f,0.3f*dC+0.59f * dM + 0.11f*dY+dK); 1331e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1332e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1333e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::ConvertGRAY2CMYK(FX_FLOAT dGray,FX_FLOAT &dC,FX_FLOAT &dM,FX_FLOAT &dY,FX_FLOAT &dK) 1334e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1335e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (dGray <0 || dGray >1) 1336e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return; 1337e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dC = 0.0f; 1338e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dM = 0.0f; 1339e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dY = 0.0f; 1340e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dK = 1.0f-dGray; 1341e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1342e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1343e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::ConvertGRAY2RGB(FX_FLOAT dGray,FX_FLOAT &dR,FX_FLOAT &dG,FX_FLOAT &dB) 1344e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1345e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (dGray <0 || dGray >1) 1346e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return; 1347e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dR = dGray; 1348e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dG = dGray; 1349e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dB = dGray; 1350e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1351e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1352e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::ConvertRGB2GRAY(FX_FLOAT dR,FX_FLOAT dG,FX_FLOAT dB,FX_FLOAT &dGray) 1353e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1354e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (dR<0 || dR>1 || dG<0 || dG > 0 || dB < 0 || dB >1) 1355e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return; 1356e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dGray = 0.3f*dR+0.59f*dG+0.11f*dB; 1357e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1358e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1359e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::ConvertCMYK2RGB(FX_FLOAT dC,FX_FLOAT dM,FX_FLOAT dY,FX_FLOAT dK,FX_FLOAT &dR,FX_FLOAT &dG,FX_FLOAT &dB) 1360e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1361e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (dC <0 || dC>1 || dM < 0 || dM > 1 || dY < 0 || dY > 1 || dK < 0 || dK > 1 ) 1362e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return; 1363e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dR = 1.0f - FX_MIN(1.0f, dC + dK); 1364e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dG = 1.0f - FX_MIN(1.0f, dM + dK); 1365e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dB = 1.0f - FX_MIN(1.0f, dY + dK); 1366e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1367e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1368e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::ConvertRGB2CMYK(FX_FLOAT dR,FX_FLOAT dG,FX_FLOAT dB,FX_FLOAT &dC,FX_FLOAT &dM,FX_FLOAT &dY,FX_FLOAT &dK) 1369e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1370e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (dR<0 || dR>1 || dG<0 || dG>1 || dB<0 || dB>1) 1371e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return; 1372e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1373e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dC = 1.0f - dR; 1374e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dM = 1.0f - dG; 1375e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dY = 1.0f - dB; 1376e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dK = FX_MIN(dC, FX_MIN(dM, dY)); 1377e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1378e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1379e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::PWLColorToARGB(const CPWL_Color& color, FX_INT32& alpha, FX_FLOAT& red, FX_FLOAT& green, FX_FLOAT& blue) 1380e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1381e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (color.nColorType) 1382e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1383e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_TRANSPARENT: 1384e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1385e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov alpha = 0; 1386e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1387e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1388e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_GRAY: 1389e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1390e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov ConvertGRAY2RGB(color.fColor1, red, green, blue); 1391e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1392e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1393e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_RGB: 1394e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1395e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov red = color.fColor1; 1396e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov green = color.fColor2; 1397e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov blue = color.fColor3; 1398e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1399e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1400e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_CMYK: 1401e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1402e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov ConvertCMYK2RGB(color.fColor1, color.fColor2, color.fColor3, color.fColor4, 1403e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov red, green, blue); 1404e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1405e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1406e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1407e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1408e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1409e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovFX_COLORREF CPWL_Utils::PWLColorToFXColor(const CPWL_Color& color, FX_INT32 nTransparancy) 1410e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1411e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nAlpha = nTransparancy; 1412e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT dRed = 0; 1413e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT dGreen = 0; 1414e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT dBlue = 0; 1415e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1416e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PWLColorToARGB(color, nAlpha, dRed, dGreen, dBlue); 1417e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1418e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return ArgbEncode(nAlpha, (FX_INT32)(dRed*255), (FX_INT32)(dGreen*255), (FX_INT32)(dBlue*255)); 1419e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1420e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1421e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::DrawFillRect(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,const CPDF_Rect & rect, 1422e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const FX_COLORREF & color) 1423e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1424e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData path; 1425e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect rcTemp(rect); 1426e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.AppendRect(rcTemp.left,rcTemp.bottom,rcTemp.right,rcTemp.top); 1427e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&path, pUser2Device, NULL, color, 0, FXFILL_WINDING); 1428e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1429e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1430e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::DrawFillArea(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, 1431e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPDF_Point* pPts, FX_INT32 nCount, const FX_COLORREF& color) 1432e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1433e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData path; 1434e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPointCount(nCount); 1435e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1436e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(0, pPts[0].x, pPts[0].y, FXPT_MOVETO); 1437e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (FX_INT32 i=1; i<nCount; i++) 1438e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(i, pPts[i].x, pPts[i].y, FXPT_LINETO); 1439e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1440e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&path, pUser2Device, NULL, color, 0, FXFILL_ALTERNATE); 1441e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1442e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1443e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::DrawStrokeRect(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,const CPDF_Rect & rect, 1444e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const FX_COLORREF & color, FX_FLOAT fWidth) 1445e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1446e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData path; 1447e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect rcTemp(rect); 1448e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.AppendRect(rcTemp.left,rcTemp.bottom,rcTemp.right,rcTemp.top); 1449e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1450e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_GraphStateData gsd; 1451e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov gsd.m_LineWidth = fWidth; 1452e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1453e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&path, pUser2Device, &gsd, 0, color, FXFILL_ALTERNATE); 1454e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1455e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1456e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::DrawStrokeLine(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, 1457e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPDF_Point & ptMoveTo, const CPDF_Point & ptLineTo, const FX_COLORREF & color, FX_FLOAT fWidth) 1458e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1459e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData path; 1460e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPointCount(2); 1461e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(0, ptMoveTo.x, ptMoveTo.y, FXPT_MOVETO); 1462e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(1, ptLineTo.x, ptLineTo.y, FXPT_LINETO); 1463e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1464e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_GraphStateData gsd; 1465e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov gsd.m_LineWidth = fWidth; 1466e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1467e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&path, pUser2Device, &gsd, 0, color, FXFILL_ALTERNATE); 1468e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1469e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1470e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::DrawFillRect(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,const CPDF_Rect & rect, 1471e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPWL_Color & color, FX_INT32 nTransparancy) 1472e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1473e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Utils::DrawFillRect(pDevice,pUser2Device,rect,PWLColorToFXColor(color,nTransparancy)); 1474e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1475e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1476e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::DrawShadow(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, 1477e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL bVertical, FX_BOOL bHorizontal, CPDF_Rect rect, 1478e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nTransparancy, FX_INT32 nStartGray, FX_INT32 nEndGray) 1479e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1480e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fStepGray = 1.0f; 1481e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1482e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (bVertical) 1483e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1484e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fStepGray = (nEndGray - nStartGray) / rect.Height(); 1485e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1486e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (FX_FLOAT fy=rect.bottom+0.5f; fy<=rect.top-0.5f; fy+=1.0f) 1487e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1488e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nGray = nStartGray + (FX_INT32)(fStepGray * (fy-rect.bottom)); 1489e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, CPDF_Point(rect.left, fy), 1490e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point(rect.right, fy), ArgbEncode(nTransparancy, nGray, nGray, nGray), 1.5f); 1491e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1492e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1493e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1494e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (bHorizontal) 1495e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1496e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fStepGray = (nEndGray - nStartGray) / rect.Width(); 1497e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1498e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (FX_FLOAT fx=rect.left+0.5f; fx<=rect.right-0.5f; fx+=1.0f) 1499e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1500e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nGray = nStartGray + (FX_INT32)(fStepGray * (fx-rect.left)); 1501e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, CPDF_Point(fx, rect.bottom), 1502e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point(fx, rect.top), ArgbEncode(nTransparancy, nGray, nGray, nGray), 1.5f); 1503e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1504e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1505e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1506e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1507e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::DrawBorder(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, 1508e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPDF_Rect & rect, FX_FLOAT fWidth, 1509e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPWL_Color & color, const CPWL_Color & crLeftTop, const CPWL_Color & crRightBottom, 1510e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nStyle, const CPWL_Dash & dash, FX_INT32 nTransparancy) 1511e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1512e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fLeft = rect.left; 1513e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fRight = rect.right; 1514e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fTop = rect.top; 1515e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fBottom = rect.bottom; 1516e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1517e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (fWidth > 0.0f) 1518e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1519e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHalfWidth = fWidth / 2.0f; 1520e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1521e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (nStyle) 1522e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1523e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov default: 1524e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_SOLID: 1525e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1526e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData path; 1527e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.AppendRect(fLeft, fBottom, fRight, fTop); 1528e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.AppendRect(fLeft + fWidth, fBottom + fWidth, fRight - fWidth, fTop - fWidth); 1529e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&path, pUser2Device, NULL, PWLColorToFXColor(color,nTransparancy), 0, FXFILL_ALTERNATE); 1530e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1531e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1532e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_DASH: 1533e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1534e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData path; 1535e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1536e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPointCount(5); 1537e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(0, fLeft + fWidth / 2.0f, fBottom + fWidth / 2.0f, FXPT_MOVETO); 1538e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(1, fLeft + fWidth / 2.0f, fTop - fWidth / 2.0f, FXPT_LINETO); 1539e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(2, fRight - fWidth / 2.0f, fTop - fWidth / 2.0f, FXPT_LINETO); 1540e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(3, fRight - fWidth / 2.0f, fBottom + fWidth / 2.0f, FXPT_LINETO); 1541e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(4, fLeft + fWidth / 2.0f, fBottom + fWidth / 2.0f, FXPT_LINETO); 1542e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1543e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_GraphStateData gsd; 1544e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov gsd.SetDashCount(2); 1545e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov gsd.m_DashArray[0] = 3.0f; 1546e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov gsd.m_DashArray[1] = 3.0f; 1547e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov gsd.m_DashPhase = 0; 1548e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1549e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov gsd.m_LineWidth = fWidth; 1550e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&path, pUser2Device, &gsd, 0, PWLColorToFXColor(color,nTransparancy), FXFILL_WINDING); 1551e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1552e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1553e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_BEVELED: 1554e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_INSET: 1555e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1556e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_GraphStateData gsd; 1557e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov gsd.m_LineWidth = fHalfWidth; 1558e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1559e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData pathLT; 1560e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1561e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathLT.SetPointCount(7); 1562e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathLT.SetPoint(0, fLeft + fHalfWidth, fBottom + fHalfWidth, FXPT_MOVETO); 1563e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathLT.SetPoint(1, fLeft + fHalfWidth, fTop - fHalfWidth, FXPT_LINETO); 1564e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathLT.SetPoint(2, fRight - fHalfWidth, fTop - fHalfWidth, FXPT_LINETO); 1565e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathLT.SetPoint(3, fRight - fHalfWidth * 2, fTop - fHalfWidth * 2, FXPT_LINETO); 1566e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathLT.SetPoint(4, fLeft + fHalfWidth * 2, fTop - fHalfWidth * 2, FXPT_LINETO); 1567e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathLT.SetPoint(5, fLeft + fHalfWidth * 2, fBottom + fHalfWidth * 2, FXPT_LINETO); 1568e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathLT.SetPoint(6, fLeft + fHalfWidth, fBottom + fHalfWidth, FXPT_LINETO); 1569e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1570e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&pathLT, pUser2Device, &gsd, PWLColorToFXColor(crLeftTop,nTransparancy), 0, FXFILL_ALTERNATE); 1571e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1572e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData pathRB; 1573e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1574e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathRB.SetPointCount(7); 1575e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathRB.SetPoint(0, fRight - fHalfWidth, fTop - fHalfWidth, FXPT_MOVETO); 1576e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathRB.SetPoint(1, fRight - fHalfWidth, fBottom + fHalfWidth, FXPT_LINETO); 1577e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathRB.SetPoint(2, fLeft + fHalfWidth, fBottom + fHalfWidth, FXPT_LINETO); 1578e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathRB.SetPoint(3, fLeft + fHalfWidth * 2, fBottom + fHalfWidth * 2, FXPT_LINETO); 1579e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathRB.SetPoint(4, fRight - fHalfWidth * 2, fBottom + fHalfWidth * 2, FXPT_LINETO); 1580e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathRB.SetPoint(5, fRight - fHalfWidth * 2, fTop - fHalfWidth * 2, FXPT_LINETO); 1581e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pathRB.SetPoint(6, fRight - fHalfWidth, fTop - fHalfWidth, FXPT_LINETO); 1582e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1583e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&pathRB, pUser2Device, &gsd, PWLColorToFXColor(crRightBottom,nTransparancy), 0, FXFILL_ALTERNATE); 1584e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1585e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData path; 1586e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1587e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.AppendRect(fLeft, fBottom, fRight, fTop); 1588e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.AppendRect(fLeft + fHalfWidth, fBottom + fHalfWidth, fRight - fHalfWidth, fTop - fHalfWidth); 1589e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1590e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&path, pUser2Device, &gsd, PWLColorToFXColor(color,nTransparancy), 0, FXFILL_ALTERNATE); 1591e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1592e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1593e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_UNDERLINED: 1594e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1595e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData path; 1596e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1597e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPointCount(2); 1598e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(0, fLeft, fBottom + fWidth / 2, FXPT_MOVETO); 1599e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.SetPoint(1, fRight, fBottom + fWidth / 2, FXPT_LINETO); 1600e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1601e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_GraphStateData gsd; 1602e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov gsd.m_LineWidth = fWidth; 1603e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1604e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&path, pUser2Device, &gsd,0, PWLColorToFXColor(color,nTransparancy), FXFILL_ALTERNATE); 1605e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1606e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1607e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PBS_SHADOW: 1608e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1609e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData path; 1610e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.AppendRect(fLeft, fBottom, fRight, fTop); 1611e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov path.AppendRect(fLeft + fWidth, fBottom + fWidth, fRight - fWidth, fTop - fWidth); 1612e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&path, pUser2Device, NULL, PWLColorToFXColor(color,nTransparancy/2), 0, FXFILL_ALTERNATE); 1613e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1614e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1615e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1616e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1617e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1618e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1619e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovstatic void AddSquigglyPath(CFX_PathData & PathData, FX_FLOAT fStartX, FX_FLOAT fEndX, FX_FLOAT fY, FX_FLOAT fStep) 1620e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1621e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PathData.AddPointCount(1); 1622e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PathData.SetPoint(PathData.GetPointCount() - 1, fStartX, fY, FXPT_MOVETO); 1623e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1624e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fx; 1625e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 i; 1626e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1627e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (i=1,fx=fStartX+fStep; fx<fEndX; fx+=fStep,i++) 1628e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1629e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PathData.AddPointCount(1); 1630e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PathData.SetPoint(PathData.GetPointCount() - 1, fx, fY + (i&1)*fStep, FXPT_LINETO); 1631e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1632e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1633e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1634e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovstatic void AddSpellCheckObj(CFX_PathData & PathData, IFX_Edit* pEdit, const CPVT_WordRange& wrWord) 1635e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1636e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fStartX = 0.0f; 1637e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fEndX = 0.0f; 1638e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fY = 0.0f; 1639e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fStep = 0.0f; 1640e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1641e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL bBreak = FALSE; 1642e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1643e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) 1644e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1645e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pIterator->SetAt(wrWord.BeginPos); 1646e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1647e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov do 1648e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1649e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_WordPlace place = pIterator->GetAt(); 1650e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1651e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_Line line; 1652e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIterator->GetLine(line)) 1653e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1654e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fY = line.ptLine.y; 1655e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fStep = (line.fLineAscent - line.fLineDescent) / 16.0f; 1656e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1657e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1658e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (place.LineCmp(wrWord.BeginPos) == 0) 1659e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1660e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pIterator->SetAt(wrWord.BeginPos); 1661e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_Word word; 1662e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIterator->GetWord(word)) 1663e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1664e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fStartX = word.ptWord.x; 1665e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1666e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1667e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 1668e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1669e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fStartX = line.ptLine.x; 1670e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1671e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1672e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (place.LineCmp(wrWord.EndPos) == 0) 1673e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1674e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pIterator->SetAt(wrWord.EndPos); 1675e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_Word word; 1676e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIterator->GetWord(word)) 1677e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1678e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fEndX = word.ptWord.x + word.fWidth; 1679e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1680e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1681e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov bBreak = TRUE; 1682e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1683e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 1684e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1685e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fEndX = line.ptLine.x + line.fLineWidth; 1686e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1687e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1688e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov AddSquigglyPath(PathData, fStartX, fEndX, fY, fStep); 1689e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1690e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (bBreak) break; 1691e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1692e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov while (pIterator->NextLine()); 1693e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1694e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1695e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1696e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::DrawEditSpellCheck(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, IFX_Edit* pEdit, 1697e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPDF_Rect& rcClip, const CPDF_Point& ptOffset, const CPVT_WordRange* pRange, 1698e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IPWL_SpellCheck * pSpellCheck) 1699e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1700e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const FX_COLORREF crSpell = ArgbEncode(255,255,0,0); 1701e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1702e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov //for spellcheck 1703e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL bLatinWord = FALSE; 1704e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_WordPlace wpWordStart; 1705e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteString sLatinWord; 1706e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1707e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData pathSpell; 1708e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1709e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->SaveState(); 1710e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1711e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (!rcClip.IsEmpty()) 1712e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1713e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect rcTemp = rcClip; 1714e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pUser2Device->TransformRect(rcTemp); 1715e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_RECT rcDevClip; 1716e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcDevClip.left = (FX_INT32)rcTemp.left; 1717e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcDevClip.right = (FX_INT32)rcTemp.right; 1718e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcDevClip.top = (FX_INT32)rcTemp.top; 1719e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov rcDevClip.bottom = (FX_INT32)rcTemp.bottom; 1720e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->SetClip_Rect(&rcDevClip); 1721e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1722e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1723e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) 1724e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1725e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pEdit->GetFontMap()) 1726e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1727e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pRange) 1728e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pIterator->SetAt(pRange->BeginPos); 1729e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 1730e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pIterator->SetAt(0); 1731e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1732e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_WordPlace oldplace; 1733e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1734e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov while (pIterator->NextWord()) 1735e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1736e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_WordPlace place = pIterator->GetAt(); 1737e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pRange && place.WordCmp(pRange->EndPos) > 0) break; 1738e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1739e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPVT_Word word; 1740e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pIterator->GetWord(word)) 1741e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1742e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (FX_EDIT_ISLATINWORD(word.Word)) 1743e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1744e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (!bLatinWord) 1745e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1746e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov wpWordStart = place; 1747e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov bLatinWord = TRUE; 1748e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1749e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1750e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sLatinWord += (char)word.Word; 1751e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1752e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 1753e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1754e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (bLatinWord) 1755e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1756e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (!sLatinWord.IsEmpty()) 1757e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1758e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pSpellCheck && !pSpellCheck->CheckWord(sLatinWord)) 1759e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1760e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov AddSpellCheckObj(pathSpell,pEdit,CPVT_WordRange(wpWordStart,oldplace)); 1761e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pIterator->SetAt(place); 1762e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1763e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1764e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov bLatinWord = FALSE; 1765e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1766e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1767e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sLatinWord.Empty(); 1768e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1769e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1770e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov oldplace = place; 1771e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1772e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 1773e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1774e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (bLatinWord) 1775e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1776e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (!sLatinWord.IsEmpty()) 1777e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1778e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pSpellCheck && !pSpellCheck->CheckWord(sLatinWord)) 1779e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1780e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov AddSpellCheckObj(pathSpell,pEdit,CPVT_WordRange(wpWordStart,oldplace)); 1781e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pIterator->SetAt(place); 1782e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1783e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1784e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov bLatinWord = FALSE; 1785e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1786e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1787e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sLatinWord.Empty(); 1788e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1789e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1790e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1791e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (!sLatinWord.IsEmpty()) 1792e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1793e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pSpellCheck && !pSpellCheck->CheckWord(sLatinWord)) 1794e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1795e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov AddSpellCheckObj(pathSpell,pEdit,CPVT_WordRange(wpWordStart,oldplace)); 1796e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1797e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1798e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1799e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1800e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1801e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_GraphStateData gsd; 1802e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov gsd.m_LineWidth = 0; 1803e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (pathSpell.GetPointCount() > 0) 1804e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&pathSpell, pUser2Device, &gsd, 0, crSpell, FXFILL_ALTERNATE); 1805e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1806e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->RestoreState(); 1807e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1808e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1809e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovFX_BOOL CPWL_Utils::IsBlackOrWhite(const CPWL_Color& color) 1810e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1811e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (color.nColorType) 1812e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1813e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_TRANSPARENT: 1814e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return FALSE; 1815e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_GRAY: 1816e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return color.fColor1 < 0.5f; 1817e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_RGB: 1818e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return color.fColor1 + color.fColor2 + color.fColor3 < 1.5f; 1819e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_CMYK: 1820e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return color.fColor1 + color.fColor2 + color.fColor3 + color.fColor4 > 2.0f; 1821e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1822e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1823e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return TRUE; 1824e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1825e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1826e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCPWL_Color CPWL_Utils::GetReverseColor(const CPWL_Color& color) 1827e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1828e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Color crRet = color; 1829e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1830e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (color.nColorType) 1831e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1832e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_GRAY: 1833e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crRet.fColor1 = 1.0f - crRet.fColor1; 1834e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1835e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_RGB: 1836e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crRet.fColor1 = 1.0f - crRet.fColor1; 1837e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crRet.fColor2 = 1.0f - crRet.fColor2; 1838e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crRet.fColor3 = 1.0f - crRet.fColor3; 1839e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1840e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_CMYK: 1841e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crRet.fColor1 = 1.0f - crRet.fColor1; 1842e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crRet.fColor2 = 1.0f - crRet.fColor2; 1843e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crRet.fColor3 = 1.0f - crRet.fColor3; 1844e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crRet.fColor4 = 1.0f - crRet.fColor4; 1845e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1846e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1847e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1848e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return crRet; 1849e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1850e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1851e6986e1e8d4a57987f47c215490cb080a65ee29aSvet GanovCFX_ByteString CPWL_Utils::GetIconAppStream(FX_INT32 nType, const CPDF_Rect& rect, const CPWL_Color& crFill, 1852e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPWL_Color& crStroke) 1853e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1854e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteString sAppStream = CPWL_Utils::GetColorAppStream(crStroke, FALSE); 1855e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream += CPWL_Utils::GetColorAppStream(crFill, TRUE); 1856e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1857e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteString sPath; 1858e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData path; 1859e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1860e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (nType) 1861e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1862e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_CHECKMARK: 1863e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Checkmark(sPath, path, rect, PWLPT_STREAM); 1864e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1865e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_CIRCLE: 1866e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Circle(sPath, path, rect, PWLPT_STREAM); 1867e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1868e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_COMMENT: 1869e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Comment(sPath, path, rect, PWLPT_STREAM); 1870e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1871e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_CROSS: 1872e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Cross(sPath, path, rect, PWLPT_STREAM); 1873e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1874e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_HELP: 1875e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Help(sPath, path, rect, PWLPT_STREAM); 1876e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1877e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_INSERTTEXT: 1878e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_InsertText(sPath, path, rect, PWLPT_STREAM); 1879e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1880e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_KEY: 1881e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Key(sPath, path, rect, PWLPT_STREAM); 1882e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1883e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_NEWPARAGRAPH: 1884e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_NewParagraph(sPath, path, rect, PWLPT_STREAM); 1885e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1886e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_TEXTNOTE: 1887e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_TextNote(sPath, path, rect, PWLPT_STREAM); 1888e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1889e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_PARAGRAPH: 1890e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Paragraph(sPath, path, rect, PWLPT_STREAM); 1891e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1892e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_RIGHTARROW: 1893e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_RightArrow(sPath, path, rect, PWLPT_STREAM); 1894e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1895e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_RIGHTPOINTER: 1896e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_RightPointer(sPath, path, rect, PWLPT_STREAM); 1897e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1898e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_STAR: 1899e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Star(sPath, path, rect, PWLPT_STREAM); 1900e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1901e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_UPARROW: 1902e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_UpArrow(sPath, path, rect, PWLPT_STREAM); 1903e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1904e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_UPLEFTARROW: 1905e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_UpLeftArrow(sPath, path, rect, PWLPT_STREAM); 1906e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1907e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_GRAPH: 1908e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Graph(sPath, path, rect, PWLPT_STREAM); 1909e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1910e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_PAPERCLIP: 1911e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Paperclip(sPath, path, rect, PWLPT_STREAM); 1912e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1913e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_ATTACHMENT: 1914e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Attachment(sPath, path, rect, PWLPT_STREAM); 1915e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1916e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_TAG: 1917e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Tag(sPath, path, rect, PWLPT_STREAM); 1918e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1919e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_FOXIT: 1920e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Foxit(sPath, path, rect, PWLPT_STREAM); 1921e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1922e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 1923e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1924e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream += sPath; 1925e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if (crStroke.nColorType != COLORTYPE_TRANSPARENT) 1926e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream += "B*\n"; 1927e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 1928e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sAppStream += "f*\n"; 1929e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1930e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return sAppStream; 1931e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 1932e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1933e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::DrawIconAppStream(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, 1934e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nType, const CPDF_Rect & rect, const CPWL_Color& crFill, const CPWL_Color& crStroke, const FX_INT32 nTransparancy) 1935e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 1936e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_GraphStateData gsd; 1937e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov gsd.m_LineWidth = 1.0f; 1938e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1939e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ByteString sPath; 1940e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_PathData path; 1941e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1942e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (nType) 1943e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 1944e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_CHECKMARK: 1945e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Checkmark(sPath, path, rect, PWLPT_PATHDATA); 1946e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1947e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_CIRCLE: 1948e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Circle(sPath, path, rect, PWLPT_PATHDATA); 1949e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1950e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_COMMENT: 1951e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Comment(sPath, path, rect, PWLPT_PATHDATA); 1952e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1953e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_CROSS: 1954e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Cross(sPath, path, rect, PWLPT_PATHDATA); 1955e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1956e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_HELP: 1957e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Help(sPath, path, rect, PWLPT_PATHDATA); 1958e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1959e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_INSERTTEXT: 1960e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_InsertText(sPath, path, rect, PWLPT_PATHDATA); 1961e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1962e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_KEY: 1963e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Key(sPath, path, rect, PWLPT_PATHDATA); 1964e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1965e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_NEWPARAGRAPH: 1966e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_NewParagraph(sPath, path, rect, PWLPT_PATHDATA); 1967e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1968e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_TEXTNOTE: 1969e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_TextNote(sPath, path, rect, PWLPT_PATHDATA); 1970e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1971e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_PARAGRAPH: 1972e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Paragraph(sPath, path, rect, PWLPT_PATHDATA); 1973e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1974e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_RIGHTARROW: 1975e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_RightArrow(sPath, path, rect, PWLPT_PATHDATA); 1976e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1977e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_RIGHTPOINTER: 1978e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_RightPointer(sPath, path, rect, PWLPT_PATHDATA); 1979e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1980e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_STAR: 1981e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Star(sPath, path, rect, PWLPT_PATHDATA); 1982e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1983e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_UPARROW: 1984e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_UpArrow(sPath, path, rect, PWLPT_PATHDATA); 1985e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1986e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_UPLEFTARROW: 1987e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_UpLeftArrow(sPath, path, rect, PWLPT_PATHDATA); 1988e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1989e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_GRAPH: 1990e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Graph(sPath, path, rect, PWLPT_PATHDATA); 1991e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1992e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_PAPERCLIP: 1993e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Paperclip(sPath, path, rect, PWLPT_PATHDATA); 1994e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1995e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_ATTACHMENT: 1996e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Attachment(sPath, path, rect, PWLPT_PATHDATA); 1997e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 1998e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_TAG: 1999e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Tag(sPath, path, rect, PWLPT_PATHDATA); 2000e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 2001e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case PWL_ICONTYPE_FOXIT: 2002e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetGraphics_Foxit(sPath, path, rect, PWLPT_PATHDATA); 2003e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 2004e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov default: 2005e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return; 2006e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 2007e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2008e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pDevice->DrawPath(&path, pUser2Device, &gsd, 2009e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PWLColorToFXColor(crFill,nTransparancy), PWLColorToFXColor(crStroke,nTransparancy), FXFILL_ALTERNATE); 2010e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2011e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2012e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Checkmark(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2013e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2014e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2015e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2016e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2017e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2018e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2019e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f, crBBox.bottom + fHeight * 2 / 5.0f),PWLPT_MOVETO), 2020e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f + PWL_BEZIER*(fWidth / 7.0f - fWidth / 15.0f), 2021e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crBBox.bottom + fHeight * 2 / 5.0f + PWL_BEZIER*(fHeight * 2 / 7.0f - fHeight * 2 / 5.0f)), PWLPT_BEZIERTO), 2022e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 4.5f + PWL_BEZIER*(fWidth / 5.0f - fWidth / 4.5f), 2023e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crBBox.bottom + fHeight / 16.0f + PWL_BEZIER*(fHeight / 5.0f - fHeight / 16.0f)), PWLPT_BEZIERTO), 2024e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 4.5f, crBBox.bottom + fHeight / 16.0f), PWLPT_BEZIERTO), 2025e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 4.5f + PWL_BEZIER*(fWidth / 4.4f - fWidth / 4.5f), 2026e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crBBox.bottom + fHeight / 16.0f - PWL_BEZIER*fHeight / 16.0f), PWLPT_BEZIERTO), 2027e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.0f + PWL_BEZIER*(fWidth / 4.0f - fWidth / 3.0f), 2028e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crBBox.bottom), PWLPT_BEZIERTO), 2029e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.0f, crBBox.bottom), PWLPT_BEZIERTO), 2030e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.0f + PWL_BEZIER*fWidth*(1/7.0f + 2/15.0f), 2031e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crBBox.bottom + PWL_BEZIER*fHeight * 4 / 5.0f), PWLPT_BEZIERTO), 2032e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 14 / 15.0f + PWL_BEZIER*fWidth*(1/7.0f - 7/15.0f), 2033e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crBBox.bottom + fHeight * 15/16.0f + PWL_BEZIER*(fHeight * 4/5.0f - fHeight * 15/16.0f)), PWLPT_BEZIERTO), 2034e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 14 / 15.0f,crBBox.bottom + fHeight * 15 / 16.0f), PWLPT_BEZIERTO), 2035e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 14 / 15.0f + PWL_BEZIER*(fWidth * 7 / 15.0f - fWidth * 14 / 15.0f), 2036e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crBBox.bottom + fHeight * 15 / 16.0f + PWL_BEZIER*(fHeight * 8 / 7.0f - fHeight * 15 / 16.0f)), PWLPT_BEZIERTO), 2037e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.6f + PWL_BEZIER*(fWidth / 3.4f - fWidth / 3.6f), 2038e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crBBox.bottom + fHeight / 3.5f + PWL_BEZIER*(fHeight / 3.5f - fHeight / 3.5f)), PWLPT_BEZIERTO), 2039e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.6f,crBBox.bottom + fHeight / 3.5f), PWLPT_BEZIERTO), 2040e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.6f, 2041e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crBBox.bottom + fHeight / 3.5f + PWL_BEZIER*(fHeight / 4.0f - fHeight / 3.5f)), PWLPT_BEZIERTO), 2042e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f + PWL_BEZIER*(fWidth / 3.5f - fWidth / 15.0f), 2043e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crBBox.bottom + fHeight * 2 / 5.0f + PWL_BEZIER*(fHeight * 3.5f / 5.0f - fHeight * 2 / 5.0f)), PWLPT_BEZIERTO), 2044e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f,crBBox.bottom + fHeight * 2 / 5.0f), PWLPT_BEZIERTO) 2045e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2046e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2047e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2048e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 16); 2049e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2050e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 16); 2051e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2052e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2053e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Circle(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2054e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2055e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2056e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2057e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2058e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2059e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2060e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f,crBBox.bottom + fHeight/2.0f), PWLPT_MOVETO), 2061e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, 2062e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crBBox.bottom + fHeight/2.0f + PWL_BEZIER*(fHeight*14/15.0f - fHeight/2.0f)), PWLPT_BEZIERTO), 2063e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f - PWL_BEZIER*(fWidth/2.0f - fWidth/15.0f), crBBox.top - fHeight/15.0f), PWLPT_BEZIERTO), 2064e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f,crBBox.top - fHeight/15.0f), PWLPT_BEZIERTO), 2065e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + PWL_BEZIER*(fWidth*14/15.0f - fWidth/2.0f), crBBox.top - fHeight/15.0f), PWLPT_BEZIERTO), 2066e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*(fHeight*14/15.0f - fHeight/2.0f)), PWLPT_BEZIERTO), 2067e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.bottom + fHeight/2.0f), PWLPT_BEZIERTO), 2068e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.bottom + fHeight/2.0f - PWL_BEZIER*(fHeight/2.0f - fHeight/15.0f)), PWLPT_BEZIERTO), 2069e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + PWL_BEZIER*(fWidth*14/15.0f - fWidth/2.0f), crBBox.bottom + fHeight/15.0f), PWLPT_BEZIERTO), 2070e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.bottom + fHeight/15.0f), PWLPT_BEZIERTO), 2071e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f - PWL_BEZIER*(fWidth/2.0f - fWidth/15.0f), crBBox.bottom + fHeight/15.0f), PWLPT_BEZIERTO), 2072e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, crBBox.bottom + fHeight/2.0f - PWL_BEZIER*(fHeight/2.0f - fHeight/15.0f)), PWLPT_BEZIERTO), 2073e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f,crBBox.bottom + fHeight/2.0f), PWLPT_BEZIERTO), 2074e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f), PWLPT_MOVETO), 2075e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*(fHeight*4/5.0f - fHeight/2.0f)), PWLPT_BEZIERTO), 2076e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f - PWL_BEZIER*(fWidth/2.0f - fWidth*3/15.0f), crBBox.top - fHeight*3/15.0f), PWLPT_BEZIERTO), 2077e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight*3/15.0f), PWLPT_BEZIERTO), 2078e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + PWL_BEZIER*(fWidth*4/5.0f - fWidth/2.0f), crBBox.top - fHeight*3/15.0f), PWLPT_BEZIERTO), 2079e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*(fHeight*4/5.0f - fHeight/2.0f)), PWLPT_BEZIERTO), 2080e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f), PWLPT_BEZIERTO), 2081e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f - PWL_BEZIER*(fHeight*4/5.0f - fHeight/2.0f)), PWLPT_BEZIERTO), 2082e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + PWL_BEZIER*(fWidth*4/5.0f - fWidth/2.0f), crBBox.bottom + fHeight*3/15.0f), PWLPT_BEZIERTO), 2083e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.bottom + fHeight*3/15.0f), PWLPT_BEZIERTO), 2084e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f - PWL_BEZIER*(fWidth*4/5.0f - fWidth/2.0f), crBBox.bottom + fHeight*3/15.0f), PWLPT_BEZIERTO), 2085e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f - PWL_BEZIER*(fHeight*4/5.0f - fHeight/2.0f)), PWLPT_BEZIERTO), 2086e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f), PWLPT_BEZIERTO) 2087e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2088e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2089e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2090e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 26); 2091e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2092e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 26); 2093e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2094e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2095e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Comment(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2096e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2097e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2098e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2099e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2100e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2101e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2102e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, crBBox.top - fHeight/6.0f), PWLPT_MOVETO), 2103e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, crBBox.top - fHeight/6.0f + PWL_BEZIER*(fHeight/6.0f - fHeight/10.0f)), PWLPT_BEZIERTO), 2104e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15.0f - PWL_BEZIER*fWidth/15.0f, crBBox.top - fHeight/10.0f), PWLPT_BEZIERTO), 2105e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15.0f, crBBox.top - fHeight/10.0f), PWLPT_BEZIERTO), 2106e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*2/15.0f, crBBox.top - fHeight/10.0f), PWLPT_LINETO), 2107e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*2/15.0f + PWL_BEZIER*fWidth/15.0f, crBBox.top - fHeight/10.0f), PWLPT_BEZIERTO), 2108e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.top - fHeight/6 + PWL_BEZIER*(fHeight/6.0f - fHeight/10.0f)), PWLPT_BEZIERTO), 2109e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.top - fHeight/6.0f), PWLPT_BEZIERTO), 2110e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.bottom + fHeight/3.0f), PWLPT_LINETO), 2111e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.bottom + fHeight*4/15.0f + PWL_BEZIER*fHeight/15.0f), PWLPT_BEZIERTO), 2112e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*2/15.0f + PWL_BEZIER*fWidth/15.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_BEZIERTO), 2113e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*2/15.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_BEZIERTO), 2114e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*5/15.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO), 2115e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*5/15.0f, crBBox.bottom + fHeight*2/15 + PWL_BEZIER*fHeight*2/15.0f), PWLPT_BEZIERTO), 2116e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*5/15.0f - PWL_BEZIER*fWidth*2/15.0f, crBBox.bottom + fHeight*2/15.0f), PWLPT_BEZIERTO), 2117e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*6/30.0f, crBBox.bottom + fHeight*2/15.0f), PWLPT_BEZIERTO), 2118e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*7/30.0f + PWL_BEZIER*fWidth/30.0f, crBBox.bottom + fHeight*2/15.0f), PWLPT_BEZIERTO), 2119e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*7/30.0f, crBBox.bottom + fHeight*2/15.0f + PWL_BEZIER*fHeight*2/15.0f), PWLPT_BEZIERTO), 2120e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*7/30.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_BEZIERTO), 2121e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO), 2122e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15.0f - PWL_BEZIER*fWidth/15.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_BEZIERTO), 2123e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, crBBox.bottom + fHeight/3.0f - PWL_BEZIER*fHeight/15.0f), PWLPT_BEZIERTO), 2124e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, crBBox.bottom + fHeight/3.0f), PWLPT_BEZIERTO), 2125e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, crBBox.top - fHeight/6.0f), PWLPT_LINETO), 2126e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15.0f, crBBox.top - fHeight*8/30.0f), PWLPT_MOVETO), 2127e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*2/15.0f, crBBox.top - fHeight*8/30.0f), PWLPT_LINETO), 2128e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15, crBBox.top - fHeight*25/60.0f), PWLPT_MOVETO), 2129e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*2/15.0f, crBBox.top - fHeight*25/60.0f), PWLPT_LINETO), 2130e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15.0f, crBBox.top - fHeight*17/30.0f), PWLPT_MOVETO), 2131e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*4/15.0f, crBBox.top - fHeight*17/30.0f), PWLPT_LINETO) 2132e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2133e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2134e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2135e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 30); 2136e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2137e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 30); 2138e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2139e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2140e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Cross(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2141e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2142e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2143e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2144e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov //FX_FLOAT fcatercorner = (FX_FLOAT)sqrt(fWidth*fWidth + fHeight*fHeight); 2145e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point center_point(crBBox.left + fWidth/2, crBBox.bottom + fHeight/2); 2146e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2147e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2148e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2149e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x, center_point.y + fHeight/10.0f), PWLPT_MOVETO), 2150e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x + fWidth*0.3f, center_point.y + fHeight/10.0f + fWidth*0.3f), PWLPT_LINETO), 2151e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x + fWidth/10.0f + fWidth*0.3f, center_point.y + fHeight*0.3f), PWLPT_LINETO), 2152e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x + fWidth/10.0f, center_point.y), PWLPT_LINETO), 2153e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x + fWidth/10.0f + fWidth*0.3f, center_point.y - fHeight*0.3f), PWLPT_LINETO), 2154e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x + fWidth*0.3f, center_point.y - fHeight/10.0f - fHeight*0.3f), PWLPT_LINETO), 2155e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x, center_point.y - fHeight/10.0f), PWLPT_LINETO), 2156e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x - fWidth*0.3f, center_point.y - fHeight/10 - fHeight*0.3f), PWLPT_LINETO), 2157e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x - fWidth/10.0f - fWidth*0.3f, center_point.y - fHeight*0.3f), PWLPT_LINETO), 2158e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x - fWidth/10, center_point.y), PWLPT_LINETO), 2159e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x - fWidth/10 - fWidth*0.3f, center_point.y + fHeight*0.3f), PWLPT_LINETO), 2160e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x - fWidth*0.3f, center_point.y + fHeight/10.0f + fHeight*0.3f), PWLPT_LINETO), 2161e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(center_point.x, center_point.y + fHeight/10.0f), PWLPT_LINETO) 2162e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2163e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2164e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2165e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 13); 2166e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2167e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 13); 2168e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2169e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2170e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Help(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2171e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2172e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2173e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2174e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2175e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2176e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2177e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60.0f, crBBox.bottom + fHeight/2.0f), PWLPT_MOVETO), 2178e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*(fHeight/60.0f - fHeight/2.0f)), PWLPT_BEZIERTO), 2179e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f - PWL_BEZIER*(fWidth/2.0f - fWidth/60.0f), crBBox.bottom + fHeight/60.0f), PWLPT_BEZIERTO), 2180e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.bottom + fHeight/60.0f), PWLPT_BEZIERTO), 2181e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + PWL_BEZIER*fWidth*29/60.0f, crBBox.bottom + fHeight/60.0f), PWLPT_BEZIERTO), 2182e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/60.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*(fHeight/60.0f - fHeight/2.0f)), PWLPT_BEZIERTO), 2183e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/60.0f, crBBox.bottom + fHeight/2.0f), PWLPT_BEZIERTO), 2184e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/60.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*fHeight*29/60.0f), PWLPT_BEZIERTO), 2185e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + PWL_BEZIER*fWidth*29/60.0f, crBBox.top - fHeight/60.0f), PWLPT_BEZIERTO), 2186e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/60.0f), PWLPT_BEZIERTO), 2187e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f - PWL_BEZIER*fWidth*29/60.0f, crBBox.top - fHeight/60.0f), PWLPT_BEZIERTO), 2188e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*fHeight*29/60.0f), PWLPT_BEZIERTO), 2189e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60.0f, crBBox.bottom + fHeight/2.0f), PWLPT_BEZIERTO), 2190e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.27f, crBBox.top - fHeight*0.36f), PWLPT_MOVETO), 2191e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.27f, crBBox.top - fHeight*0.36f + PWL_BEZIER*fHeight*0.23f), PWLPT_BEZIERTO), 2192e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f - PWL_BEZIER*fWidth*0.23f, crBBox.bottom + fHeight*0.87f), PWLPT_BEZIERTO), 2193e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.bottom + fHeight*0.87f), PWLPT_BEZIERTO), 2194e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f + PWL_BEZIER*fWidth*0.23f, crBBox.bottom + fHeight*0.87f), PWLPT_BEZIERTO), 2195e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.27f, crBBox.top - fHeight*0.36f + PWL_BEZIER*fHeight*0.23f), PWLPT_BEZIERTO), 2196e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.27f, crBBox.top - fHeight*0.36f), PWLPT_BEZIERTO), 2197e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.27f - fWidth*0.08f*0.2f, crBBox.top - fHeight*0.36f - fHeight*0.15f*0.7f), PWLPT_BEZIERTO), 2198e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.35f + fWidth*0.08f*0.2f, crBBox.top - fHeight*0.51f + fHeight*0.15f*0.2f), PWLPT_BEZIERTO), 2199e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.35f, crBBox.top - fHeight*0.51f), PWLPT_BEZIERTO), 2200e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.35f - fWidth*0.1f*0.5f, crBBox.top - fHeight*0.51f - fHeight*0.15f*0.3f), PWLPT_BEZIERTO), 2201e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f - fWidth*0.1f*0.5f, crBBox.top - fHeight*0.68f + fHeight*0.15f*0.5f), PWLPT_BEZIERTO), 2202e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f, crBBox.top - fHeight*0.68f), PWLPT_BEZIERTO), 2203e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f, crBBox.bottom + fHeight*0.30f), PWLPT_LINETO), 2204e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f, crBBox.bottom + fHeight*0.30f - fWidth*0.1f*0.7f), PWLPT_BEZIERTO), 2205e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.55f, crBBox.bottom + fHeight*0.30f - fWidth*0.1f*0.7f), PWLPT_BEZIERTO), 2206e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.55f, crBBox.bottom + fHeight*0.30f), PWLPT_BEZIERTO), 2207e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.55f, crBBox.top - fHeight*0.66f), PWLPT_LINETO), 2208e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.55f - fWidth*0.1f*0.05f, crBBox.top - fHeight*0.66f + fHeight*0.18f*0.5f), PWLPT_BEZIERTO), 2209e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f - fWidth*0.1f*0.05f, crBBox.top - fHeight*0.48f - fHeight*0.18f*0.3f), PWLPT_BEZIERTO), 2210e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f, crBBox.top - fHeight*0.48f), PWLPT_BEZIERTO), 2211e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f + fWidth*0.08f*0.2f, crBBox.top - fHeight*0.48f + fHeight*0.18f*0.2f), PWLPT_BEZIERTO), 2212e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.37f - fWidth*0.08f*0.2f, crBBox.top - fHeight*0.36f - fHeight*0.18f*0.7f), PWLPT_BEZIERTO), 2213e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.37f, crBBox.top - fHeight*0.36f), PWLPT_BEZIERTO), 2214e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.37f, crBBox.top - fHeight*0.36f + PWL_BEZIER*fHeight*0.13f), PWLPT_BEZIERTO), 2215e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f + PWL_BEZIER*fWidth*0.13f, crBBox.bottom + fHeight*0.77f), PWLPT_BEZIERTO), 2216e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.bottom + fHeight*0.77f), PWLPT_BEZIERTO), 2217e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f - PWL_BEZIER*fWidth*0.13f, crBBox.bottom + fHeight*0.77f), PWLPT_BEZIERTO), 2218e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.37f, crBBox.top - fHeight*0.36f + PWL_BEZIER*fHeight*0.13f), PWLPT_BEZIERTO), 2219e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.37f, crBBox.top - fHeight*0.36f), PWLPT_BEZIERTO), 2220e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.37f, crBBox.top - fHeight*0.36f - fWidth*0.1f*0.6f), PWLPT_BEZIERTO), 2221e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.27f, crBBox.top - fHeight*0.36f - fWidth*0.1f*0.6f), PWLPT_BEZIERTO), 2222e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.27f, crBBox.top - fHeight*0.36f), PWLPT_BEZIERTO), 2223e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.56f, crBBox.bottom + fHeight*0.13f), PWLPT_MOVETO), 2224e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.56f, crBBox.bottom + fHeight*0.13f + PWL_BEZIER*fHeight*0.055f), PWLPT_BEZIERTO), 2225e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.505f - PWL_BEZIER*fWidth*0.095f, crBBox.bottom + fHeight*0.185f), PWLPT_BEZIERTO), 2226e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.505f, crBBox.bottom + fHeight*0.185f), PWLPT_BEZIERTO), 2227e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.505f + PWL_BEZIER*fWidth*0.065f, crBBox.bottom + fHeight*0.185f), PWLPT_BEZIERTO), 2228e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.44f, crBBox.bottom + fHeight*0.13f + PWL_BEZIER*fHeight*0.055f), PWLPT_BEZIERTO), 2229e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.44f, crBBox.bottom + fHeight*0.13f), PWLPT_BEZIERTO), 2230e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.44f, crBBox.bottom + fHeight*0.13f - PWL_BEZIER*fHeight*0.055f), PWLPT_BEZIERTO), 2231e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.505f + PWL_BEZIER*fWidth*0.065f, crBBox.bottom + fHeight*0.075f), PWLPT_BEZIERTO), 2232e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.505f, crBBox.bottom + fHeight*0.075f), PWLPT_BEZIERTO), 2233e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.505f - PWL_BEZIER*fWidth*0.065f, crBBox.bottom + fHeight*0.075f), PWLPT_BEZIERTO), 2234e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.56f, crBBox.bottom + fHeight*0.13f - PWL_BEZIER*fHeight*0.055f), PWLPT_BEZIERTO), 2235e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.56f, crBBox.bottom + fHeight*0.13f), PWLPT_BEZIERTO) 2236e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2237e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2238e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2239e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 59); 2240e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2241e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 59); 2242e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2243e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2244e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_InsertText(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2245e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2246e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2247e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2248e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2249e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2250e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2251e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/10, crBBox.bottom + fHeight/10), PWLPT_MOVETO), 2252e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2, crBBox.top - fHeight*2/15), PWLPT_LINETO), 2253e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10, crBBox.bottom + fHeight/10), PWLPT_LINETO), 2254e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/10, crBBox.bottom + fHeight/10), PWLPT_LINETO) 2255e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2256e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2257e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2258e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 4); 2259e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2260e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 4); 2261e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2262e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2263e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Key(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2264e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2265e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2266e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2267e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT k = -fHeight/fWidth; 2268e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point tail; 2269e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point CicleCenter; 2270e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov tail.x = crBBox.left + fWidth*0.9f; 2271e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov tail.y = k*(tail.x - crBBox.right) + crBBox.bottom; 2272e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CicleCenter.x = crBBox.left + fWidth*0.15f; 2273e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CicleCenter.y = k*(CicleCenter.x - crBBox.right) + crBBox.bottom; 2274e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2275e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2276e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2277e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/30.0f, -fWidth/30.0f/k + tail.y), PWLPT_MOVETO), 2278e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/30.0f - fWidth*0.18f, -k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO), 2279e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f + fWidth*0.07f, 2280e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov -fWidth*0.07f/k - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO), 2281e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f - fWidth/20 + fWidth*0.07f, 2282e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov -fWidth*0.07f/k - k*fWidth/20 - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO), 2283e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f - fWidth/20, 2284e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov -k*fWidth/20 - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO), 2285e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f - fWidth/20 - fWidth/15, 2286e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov -k*fWidth/15 - k*fWidth/20 - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO), 2287e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f - fWidth/20 - fWidth/15 + fWidth*0.07f, 2288e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov -fWidth*0.07f/k - k*fWidth/15 - k*fWidth/20 - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO), 2289e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f - fWidth/20 - fWidth/15 - fWidth/20 + fWidth*0.07f, 2290e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov -fWidth*0.07f/k + -k*fWidth/20 + -k*fWidth/15 - k*fWidth/20 - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO), 2291e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f - fWidth/20 - fWidth/15 - fWidth/20, 2292e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov -k*fWidth/20 + -k*fWidth/15 - k*fWidth/20 - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO), 2293e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.45f, -k*fWidth*0.45f - fWidth/30/k + tail.y), PWLPT_LINETO), 2294e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.45f + fWidth*0.2f, 2295e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov -fWidth*0.4f/k - k*fWidth*0.45f - fWidth/30/k + tail.y), PWLPT_BEZIERTO), 2296e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.2f, - fWidth*0.1f/k + CicleCenter.y), PWLPT_BEZIERTO), 2297e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x, CicleCenter.y), PWLPT_BEZIERTO), 2298e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x - fWidth/60.0f, -k*fWidth/60 + CicleCenter.y), PWLPT_BEZIERTO), 2299e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x - fWidth/60, -k*fWidth/60 + CicleCenter.y), PWLPT_BEZIERTO), 2300e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x, CicleCenter.y), PWLPT_BEZIERTO), 2301e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x - fWidth*0.22f, fWidth*0.35f/k + CicleCenter.y - fHeight*0.05f), PWLPT_BEZIERTO), 2302e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x - fWidth/30 - fWidth*0.45f - fWidth*0.18f, fWidth*0.05f/k - k*fWidth*0.45f + fWidth/30/k + tail.y - fHeight*0.05f), PWLPT_BEZIERTO), 2303e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x - fWidth/30.0f - fWidth*0.45f, -k*fWidth*0.45f + fWidth/30.0f/k + tail.y), PWLPT_BEZIERTO), 2304e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x - fWidth/30.0f, fWidth/30.0f/k + tail.y), PWLPT_LINETO), 2305e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/30, -fWidth/30/k + tail.y), PWLPT_LINETO), 2306e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.08f, k*fWidth*0.08f + CicleCenter.y), PWLPT_MOVETO), 2307e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.08f + fWidth*0.1f, -fWidth*0.1f/k + k*fWidth*0.08f + CicleCenter.y), PWLPT_BEZIERTO), 2308e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.22f + fWidth*0.1f, k*fWidth*0.22f + CicleCenter.y - fWidth*0.1f/k), PWLPT_BEZIERTO), 2309e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.22f, k*fWidth*0.22f + CicleCenter.y), PWLPT_BEZIERTO), 2310e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.22f - fWidth*0.1f, fWidth*0.1f/k + k*fWidth*0.22f + CicleCenter.y), PWLPT_BEZIERTO), 2311e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.08f - fWidth*0.1f, fWidth*0.1f/k + k*fWidth*0.08f + CicleCenter.y), PWLPT_BEZIERTO), 2312e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.08f, k*fWidth*0.08f + CicleCenter.y), PWLPT_BEZIERTO) 2313e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2314e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2315e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2316e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 28); 2317e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2318e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 28); 2319e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2320e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2321e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_NewParagraph(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2322e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2323e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2324e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2325e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2326e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2327e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2328e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/20.0f), PWLPT_MOVETO), 2329e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/10.0f, crBBox.top - fHeight/2.0f), PWLPT_LINETO), 2330e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10.0f, crBBox.top - fHeight/2.0f), PWLPT_LINETO), 2331e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/20.0f), PWLPT_LINETO), 2332e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.12f, crBBox.top - fHeight*17/30.0f), PWLPT_MOVETO), 2333e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.12f, crBBox.bottom + fHeight/10.0f), PWLPT_LINETO), 2334e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.22f, crBBox.bottom + fHeight/10.0f), PWLPT_LINETO), 2335e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.22f, crBBox.top - fHeight*17/30.0f - fWidth*0.14f), PWLPT_LINETO), 2336e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.38f, crBBox.bottom + fHeight/10.0f), PWLPT_LINETO), 2337e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.48f, crBBox.bottom + fHeight/10.0f), PWLPT_LINETO), 2338e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.48f, crBBox.top - fHeight*17/30.0f), PWLPT_LINETO), 2339e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.38f, crBBox.top - fHeight*17/30.0f), PWLPT_LINETO), 2340e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.38f, crBBox.bottom + fWidth*0.24f), PWLPT_LINETO), 2341e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.22f, crBBox.top - fHeight*17/30.0f), PWLPT_LINETO), 2342e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.12f, crBBox.top - fHeight*17/30.0f), PWLPT_LINETO), 2343e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.bottom + fHeight/10.0f), PWLPT_MOVETO), 2344e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.bottom + fHeight/10.0f), PWLPT_LINETO), 2345e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.bottom + fHeight/10.0f + fHeight/7.0f), PWLPT_LINETO), 2346e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.97f, crBBox.bottom + fHeight/10.0f + fHeight/7.0f), PWLPT_BEZIERTO), 2347e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.97f, crBBox.top - fHeight*17/30.0f), PWLPT_BEZIERTO), 2348e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.top - fHeight*17/30.0f), PWLPT_BEZIERTO), 2349e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*17/30.0f), PWLPT_LINETO), 2350e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.bottom + fHeight/10.0f), PWLPT_LINETO), 2351e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.bottom + fHeight/7 + fHeight*0.18f), PWLPT_MOVETO), 2352e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.85f, crBBox.bottom + fHeight/7 + fHeight*0.18f), PWLPT_BEZIERTO), 2353e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.85f, crBBox.top - fHeight*17/30.0f - fHeight*0.08f), PWLPT_BEZIERTO), 2354e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.top - fHeight*17/30.0f - fHeight*0.08f), PWLPT_BEZIERTO), 2355e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.bottom + fHeight/7 + fHeight*0.18f), PWLPT_LINETO) 2356e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2357e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2358e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2359e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 28); 2360e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2361e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 28); 2362e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2363e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2364e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_TextNote(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2365e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2366e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2367e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2368e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2369e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2370e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2371e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/10.0f, crBBox.bottom + fHeight/15.0f), PWLPT_MOVETO), 2372e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*7/10.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO), 2373e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO), 2374e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10.0f, crBBox.top - fHeight/15.0f), PWLPT_LINETO), 2375e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/10.0f, crBBox.top - fHeight/15.0f), PWLPT_LINETO), 2376e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/10.0f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO), 2377e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/10.0f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO), 2378e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO), 2379e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/10.0f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO), 2380e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/10.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO), 2381e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO), 2382e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/5.0f, crBBox.top - fHeight*4/15.0f), PWLPT_MOVETO), 2383e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/5.0f, crBBox.top - fHeight*4/15.0f), PWLPT_LINETO), 2384e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/5.0f, crBBox.top - fHeight*7/15.0f), PWLPT_MOVETO), 2385e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/5.0f, crBBox.top - fHeight*7/15.0f), PWLPT_LINETO), 2386e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/5.0f, crBBox.top - fHeight*10/15.0f), PWLPT_MOVETO), 2387e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/10.0f, crBBox.top - fHeight*10/15.0f), PWLPT_LINETO) 2388e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2389e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2390e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2391e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 17); 2392e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2393e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 17); 2394e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2395e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2396e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Paragraph(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2397e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2398e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2399e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2400e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2401e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2402e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2403e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/15.0f), PWLPT_MOVETO), 2404e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.top - fHeight/15.0f), PWLPT_LINETO), 2405e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO), 2406e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.634f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO), 2407e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.634f, crBBox.top - fHeight*2/15.0f), PWLPT_LINETO), 2408e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.566f, crBBox.top - fHeight*2/15.0f), PWLPT_LINETO), 2409e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.566f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO), 2410e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO), 2411e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/15.0f - fHeight*0.4f), PWLPT_LINETO), 2412e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.2f, crBBox.top - fHeight/15.0f - fHeight*0.4f), PWLPT_BEZIERTO), 2413e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.2f, crBBox.top - fHeight/15.0f), PWLPT_BEZIERTO), 2414e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/15.0f), PWLPT_BEZIERTO) 2415e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2416e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2417e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2418e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 12); 2419e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2420e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 12); 2421e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2422e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2423e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_RightArrow(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2424e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2425e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2426e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2427e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2428e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2429e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2430e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.top - fHeight/2.0f), PWLPT_MOVETO), 2431e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + fWidth/8.0f, crBBox.bottom + fHeight/5.0f), PWLPT_LINETO), 2432e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.bottom + fHeight/5.0f), PWLPT_LINETO), 2433e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f - fWidth*0.15f, crBBox.top - fHeight/2.0f - fWidth/25.0f), PWLPT_LINETO), 2434e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.1f, crBBox.top - fHeight/2.0f - fWidth/25.0f), PWLPT_LINETO), 2435e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.1f, crBBox.top - fHeight/2.0f + fWidth/25.0f), PWLPT_LINETO), 2436e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f - fWidth*0.15f, crBBox.top - fHeight/2.0f + fWidth/25.0f), PWLPT_LINETO), 2437e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/5.0f), PWLPT_LINETO), 2438e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + fWidth/8.0f, crBBox.top - fHeight/5.0f), PWLPT_LINETO), 2439e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.top - fHeight/2.0f), PWLPT_LINETO) 2440e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2441e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2442e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2443e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 10); 2444e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2445e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 10); 2446e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2447e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2448e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_RightPointer(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2449e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2450e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2451e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2452e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2453e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2454e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2455e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30.0f, crBBox.top - fHeight/2.0f), PWLPT_MOVETO), 2456e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/30.0f, crBBox.bottom + fHeight/6.0f), PWLPT_LINETO), 2457e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*4/15.0f, crBBox.top - fHeight/2.0f), PWLPT_LINETO), 2458e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/30.0f, crBBox.top - fHeight/6.0f), PWLPT_LINETO), 2459e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30.0f, crBBox.top - fHeight/2.0f), PWLPT_LINETO) 2460e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2461e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2462e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2463e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 5); 2464e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2465e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 5); 2466e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2467e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2468e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Star(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2469e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2470e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fLongRadius = (crBBox.top - crBBox.bottom)/(1+(FX_FLOAT)cos(PWL_PI/5.0f)); 2471e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fLongRadius = fLongRadius * 0.7f; 2472e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fShortRadius = fLongRadius * 0.55f; 2473e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point ptCenter = CPDF_Point((crBBox.left + crBBox.right) / 2.0f,(crBBox.top + crBBox.bottom) / 2.0f); 2474e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2475e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT px1[5], py1[5]; 2476e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT px2[5], py2[5]; 2477e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2478e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fAngel = PWL_PI/10.0f; 2479e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2480e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (FX_INT32 i=0; i<5; i++) 2481e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2482e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov px1[i] = ptCenter.x + fLongRadius * (FX_FLOAT)cos(fAngel); 2483e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov py1[i] = ptCenter.y + fLongRadius * (FX_FLOAT)sin(fAngel); 2484e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2485e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fAngel += PWL_PI * 2 / 5.0f; 2486e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 2487e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2488e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fAngel = PWL_PI/5.0f + PWL_PI/10.0f; 2489e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2490e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for (FX_INT32 j=0; j<5; j++) 2491e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2492e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov px2[j] = ptCenter.x + fShortRadius * (FX_FLOAT)cos(fAngel); 2493e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov py2[j] = ptCenter.y + fShortRadius * (FX_FLOAT)sin(fAngel); 2494e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2495e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fAngel += PWL_PI * 2 / 5.0f; 2496e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 2497e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2498e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[11]; 2499e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PathArray[0] = CPWL_PathData(CPWL_Point(px1[0], py1[0]), PWLPT_MOVETO); 2500e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PathArray[1] = CPWL_PathData(CPWL_Point(px2[0], py2[0]), PWLPT_LINETO); 2501e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2502e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov for(FX_INT32 k = 0; k < 4; k++) 2503e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2504e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PathArray[(k+1)*2] = CPWL_PathData(CPWL_Point(px1[k+1], py1[k+1]), PWLPT_LINETO); 2505e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PathArray[(k+1)*2 + 1] = CPWL_PathData(CPWL_Point(px2[k+1], py2[k+1]), PWLPT_LINETO); 2506e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 2507e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2508e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PathArray[10] = CPWL_PathData(CPWL_Point(px1[0], py1[0]), PWLPT_LINETO); 2509e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2510e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2511e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 11); 2512e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2513e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 11); 2514e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2515e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2516e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_UpArrow(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2517e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2518e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2519e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2520e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2521e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2522e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2523e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/15.0f), PWLPT_MOVETO), 2524e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10.0f, crBBox.top - fWidth*3/5.0f), PWLPT_LINETO), 2525e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fWidth*3/5.0f), PWLPT_LINETO), 2526e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO), 2527e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO), 2528e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fWidth*3/5.0f), PWLPT_LINETO), 2529e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/10, crBBox.top - fWidth*3/5.0f), PWLPT_LINETO), 2530e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/15.0f), PWLPT_LINETO) 2531e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2532e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2533e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2534e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 8); 2535e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2536e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 8); 2537e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2538e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2539e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_UpLeftArrow(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2540e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2541e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2542e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2543e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point leftup(crBBox.left, crBBox.top); 2544e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point rightdown(crBBox.right, crBBox.bottom); 2545e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT k = -fHeight/fWidth; 2546e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Point tail; 2547e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov tail.x = crBBox.left + fWidth*4/5.0f; 2548e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov tail.y = k*(tail.x - crBBox.right) + rightdown.y; 2549e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2550e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2551e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2552e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/20.0f, k*(crBBox.left + fWidth/20.0f - rightdown.x) + rightdown.y), PWLPT_MOVETO), 2553e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(fHeight*17/60.0f/k + tail.x + fWidth/10.0f + fWidth/5.0f, 2554e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov -fWidth/5.0f/k + tail.y - fWidth/10.0f/k + fHeight*17/60.0f), PWLPT_LINETO), 2555e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(fHeight*17/60.0f/k + tail.x + fWidth/10.0f, 2556e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov tail.y - fWidth/10.0f/k + fHeight*17/60.0f), PWLPT_LINETO), 2557e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x + fWidth/10.0f, tail.y - fWidth/10.0f/k), PWLPT_LINETO), 2558e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(tail.x - fWidth/10.0f, tail.y + fWidth/10.0f/k), PWLPT_LINETO), 2559e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(fHeight*17/60.0f/k + tail.x - fWidth/10.0f, tail.y + fWidth/10.0f/k + fHeight*17/60.0f), PWLPT_LINETO), 2560e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(fHeight*17/60.0f/k + tail.x - fWidth/10.0f - fWidth/5.0f, 2561e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fWidth/5.0f/k + tail.y + fWidth/10.0f/k + fHeight*17/60.0f), PWLPT_LINETO), 2562e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/20.0f, k*(crBBox.left + fWidth/20.0f - rightdown.x) + rightdown.y), PWLPT_LINETO) 2563e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2564e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2565e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2566e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 8); 2567e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2568e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 8); 2569e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2570e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2571e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Graph(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2572e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2573e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2574e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2575e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2576e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2577e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2578e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.05f, crBBox.top - fWidth*0.15f), PWLPT_MOVETO), 2579e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.25f, crBBox.top - fHeight*0.15f), PWLPT_LINETO), 2580e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.275f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO), 2581e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.05f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO), 2582e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.05f, crBBox.top - fWidth*0.15f), PWLPT_LINETO), 2583e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2584e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.275f, crBBox.top - fWidth*0.45f), PWLPT_MOVETO), 2585e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.475f, crBBox.top - fWidth*0.45f), PWLPT_LINETO), 2586e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.475f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO), 2587e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.275f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO), 2588e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.275f, crBBox.top - fWidth*0.45f), PWLPT_LINETO), 2589e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2590e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.top - fHeight*0.05f), PWLPT_MOVETO), 2591e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.top - fHeight*0.05f), PWLPT_LINETO), 2592e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO), 2593e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO), 2594e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.top - fHeight*0.05f), PWLPT_LINETO), 2595e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2596e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.725f, crBBox.top - fWidth*0.35f), PWLPT_MOVETO), 2597e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.925f, crBBox.top - fWidth*0.35f), PWLPT_LINETO), 2598e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.925f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO), 2599e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.725f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO), 2600e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.725f, crBBox.top - fWidth*0.35f), PWLPT_LINETO) 2601e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2602e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2603e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2604e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 20); 2605e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2606e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 20); 2607e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2608e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2609e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Paperclip(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2610e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2611e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2612e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2613e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2614e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2615e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2616e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60, crBBox.top - fHeight*0.25f), PWLPT_MOVETO), 2617e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60, crBBox.bottom + fHeight*0.25f), PWLPT_LINETO), 2618e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60, crBBox.bottom + fHeight*0.25f - fWidth*57/60.0f*0.35f), PWLPT_BEZIERTO), 2619e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30, crBBox.bottom + fHeight*0.25f - fWidth*57/60.0f*0.35f), PWLPT_BEZIERTO), 2620e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30, crBBox.bottom + fHeight*0.25f), PWLPT_BEZIERTO), 2621e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2622e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30, crBBox.top - fHeight*0.33f), PWLPT_LINETO), 2623e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30, crBBox.top - fHeight*0.33f + fHeight/15*0.5f), PWLPT_BEZIERTO), 2624e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30 - fWidth*0.12f, crBBox.top - fHeight*0.33f + fHeight/15*0.5f), PWLPT_BEZIERTO), 2625e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30 - fWidth*0.12f, crBBox.top - fHeight*0.33f), PWLPT_BEZIERTO), 2626e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2627e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30 - fWidth*0.12f, crBBox.bottom + fHeight*0.2f), PWLPT_LINETO), 2628e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30 - fWidth*0.12f, crBBox.bottom + fHeight*0.2f - (fWidth*57/60.0f - fWidth*0.24f)*0.25f), PWLPT_BEZIERTO), 2629e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60 + fWidth*0.12f, crBBox.bottom + fHeight*0.2f - (fWidth*57/60.0f - fWidth*0.24f)*0.25f), PWLPT_BEZIERTO), 2630e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60 + fWidth*0.12f, crBBox.bottom + fHeight*0.2f), PWLPT_BEZIERTO), 2631e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2632e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60 + fWidth*0.12f, crBBox.top - fHeight*0.2f), PWLPT_LINETO), 2633e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60 + fWidth*0.12f, crBBox.top - fHeight*0.2f + (fWidth*11/12.0f - fWidth*0.36f)*0.25f), PWLPT_BEZIERTO), 2634e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.24f, crBBox.top - fHeight*0.2f + (fWidth*11/12.0f - fWidth*0.36f)*0.25f), PWLPT_BEZIERTO), 2635e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.24f, crBBox.top - fHeight*0.2f), PWLPT_BEZIERTO), 2636e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2637e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.24f, crBBox.bottom + fHeight*0.25f), PWLPT_LINETO), 2638e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.24f, crBBox.bottom + fHeight*0.25f - (fWidth*14/15.0f - fWidth*0.53f)*0.25f), PWLPT_BEZIERTO), 2639e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.29f, crBBox.bottom + fHeight*0.25f - (fWidth*14/15.0f - fWidth*0.53f)*0.25f), PWLPT_BEZIERTO), 2640e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.29f, crBBox.bottom + fHeight*0.25f), PWLPT_BEZIERTO), 2641e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2642e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.29f, crBBox.top - fHeight*0.33f), PWLPT_LINETO), 2643e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.29f, crBBox.top - fHeight*0.33f + fWidth*0.12f*0.35f), PWLPT_BEZIERTO), 2644e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.17f, crBBox.top - fHeight*0.33f + fWidth*0.12f*0.35f), PWLPT_BEZIERTO), 2645e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.17f, crBBox.top - fHeight*0.33f), PWLPT_BEZIERTO), 2646e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2647e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.17f, crBBox.bottom + fHeight*0.3f), PWLPT_LINETO), 2648e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.17f, crBBox.bottom + fHeight*0.3f - fWidth*(14/15.0f - 0.29f)*0.35f), PWLPT_BEZIERTO), 2649e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.12f, crBBox.bottom + fHeight*0.3f - fWidth*(14/15.0f - 0.29f)*0.35f), PWLPT_BEZIERTO), 2650e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.12f, crBBox.bottom + fHeight*0.3f), PWLPT_BEZIERTO), 2651e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2652e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.12f, crBBox.top - fHeight*0.25f), PWLPT_LINETO), 2653e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.12f, crBBox.top - fHeight*0.25f + fWidth*0.35f*(11/12.0f - 0.12f)), PWLPT_BEZIERTO), 2654e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60, crBBox.top - fHeight*0.25f + fWidth*0.35f*(11/12.0f - 0.12f)), PWLPT_BEZIERTO), 2655e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60, crBBox.top - fHeight*0.25f), PWLPT_BEZIERTO) 2656e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2657e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2658e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2659e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 33); 2660e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2661e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 33); 2662e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2663e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2664e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Attachment(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2665e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2666e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2667e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2668e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2669e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2670e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2671e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.25f, crBBox.top - fHeight*0.1f), PWLPT_MOVETO), 2672e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.23f), PWLPT_LINETO), 2673e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.5f), PWLPT_LINETO), 2674e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.5f + fWidth*0.04f), PWLPT_BEZIERTO), 2675e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*0.5f + fWidth*0.04f), PWLPT_BEZIERTO), 2676e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*0.5f), PWLPT_BEZIERTO), 2677e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2678e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*0.23f), PWLPT_LINETO), 2679e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.25f, crBBox.top - fHeight*0.1f), PWLPT_LINETO), 2680e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.25f, crBBox.top - fHeight*0.1f), PWLPT_LINETO), 2681e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.23f), PWLPT_LINETO), 2682e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*0.23f), PWLPT_LINETO), 2683e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2684e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.5f), PWLPT_MOVETO), 2685e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f - fWidth*0.25f*0.4f, crBBox.top - fHeight*0.5f), PWLPT_BEZIERTO), 2686e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.15f, crBBox.top - fHeight*0.65f + fHeight*0.15f*0.4f), PWLPT_BEZIERTO), 2687e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.15f, crBBox.top - fHeight*0.65f), PWLPT_BEZIERTO), 2688e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2689e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.15f, crBBox.top - fHeight*0.65f), PWLPT_LINETO), 2690e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.15f, crBBox.top - fHeight*0.65f + fHeight*0.15f*0.4f), PWLPT_BEZIERTO), 2691e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f + fWidth*0.25f*0.4f, crBBox.top - fHeight*0.5f), PWLPT_BEZIERTO), 2692e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*0.5f), PWLPT_BEZIERTO), 2693e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2694e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*0.5f + fWidth*0.04f), PWLPT_BEZIERTO), 2695e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.5f + fWidth*0.04f), PWLPT_BEZIERTO), 2696e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.5f), PWLPT_BEZIERTO), 2697e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2698e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.top - fHeight*0.65f), PWLPT_MOVETO), 2699e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.bottom + fHeight*0.1f), PWLPT_LINETO) 2700e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2701e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2702e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2703e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 24); 2704e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2705e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 24); 2706e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2707e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2708e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Tag(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2709e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2710e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crBBox.right - crBBox.left; 2711e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crBBox.top - crBBox.bottom; 2712e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2713e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2714e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2715e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.1f), PWLPT_MOVETO), 2716e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.1f, crBBox.top - fHeight*0.5f), PWLPT_LINETO), 2717e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.3f, crBBox.bottom + fHeight*0.1f), PWLPT_LINETO), 2718e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.1f, crBBox.bottom + fHeight*0.1f), PWLPT_LINETO), 2719e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.1f, crBBox.top - fHeight*0.1f), PWLPT_LINETO), 2720e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.1f), PWLPT_LINETO), 2721e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.3f), PWLPT_MOVETO), 2722e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.2f, crBBox.top - fHeight*0.3f), PWLPT_LINETO), 2723e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.5f), PWLPT_MOVETO), 2724e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.2f, crBBox.top - fHeight*0.5f), PWLPT_LINETO), 2725e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.7f), PWLPT_MOVETO), 2726e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.2f, crBBox.top - fHeight*0.7f), PWLPT_LINETO) 2727e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2728e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2729e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2730e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 12); 2731e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2732e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 12); 2733e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2734e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2735e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Utils::GetGraphics_Foxit(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type) 2736e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2737e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fOutWidth = crBBox.right - crBBox.left; 2738e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fOutHeight = crBBox.top - crBBox.bottom; 2739e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2740e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect crInBox = crBBox; 2741e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crInBox.left = crBBox.left + fOutWidth*0.08f; 2742e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crInBox.right = crBBox.right - fOutWidth*0.08f; 2743e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crInBox.top = crBBox.top - fOutHeight*0.08f; 2744e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov crInBox.bottom = crBBox.bottom + fOutHeight*0.08f; 2745e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2746e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fWidth = crInBox.right - crInBox.left; 2747e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fHeight = crInBox.top - crInBox.bottom; 2748e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2749e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData PathArray[] = 2750e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2751e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top), PWLPT_MOVETO), 2752e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.45f, crInBox.top), PWLPT_LINETO), 2753e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.45f, crInBox.top - PWL_BEZIER * fHeight * 0.4f), PWLPT_BEZIERTO), 2754e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.45f - PWL_BEZIER * fWidth * 0.45f, crInBox.top - fHeight*0.4f), PWLPT_BEZIERTO), 2755e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top - fHeight*0.4f), PWLPT_BEZIERTO), 2756e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top), PWLPT_LINETO), 2757e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2758e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.60f, crInBox.top), PWLPT_MOVETO), 2759e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.75f, crInBox.top), PWLPT_LINETO), 2760e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.75f, crInBox.top - PWL_BEZIER * fHeight * 0.7f), PWLPT_BEZIERTO), 2761e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.75f - PWL_BEZIER * fWidth * 0.75f, crInBox.top - fHeight*0.7f), PWLPT_BEZIERTO), 2762e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top - fHeight*0.7f), PWLPT_BEZIERTO), 2763e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top - fHeight*0.55f), PWLPT_LINETO), 2764e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + PWL_BEZIER * fWidth*0.60f, crInBox.top - fHeight*0.55f), PWLPT_BEZIERTO), 2765e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.60f, crInBox.top - PWL_BEZIER * fHeight * 0.55f), PWLPT_BEZIERTO), 2766e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.60f, crInBox.top), PWLPT_BEZIERTO), 2767e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2768e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.90f, crInBox.top), PWLPT_MOVETO), 2769e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.90f, crInBox.top - PWL_BEZIER * fHeight * 0.85f), PWLPT_BEZIERTO), 2770e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.90f - PWL_BEZIER * fWidth * 0.90f, crInBox.top - fHeight*0.85f), PWLPT_BEZIERTO), 2771e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top - fHeight*0.85f), PWLPT_BEZIERTO), 2772e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left, crInBox.bottom), PWLPT_LINETO), 2773e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.right, crInBox.bottom), PWLPT_LINETO), 2774e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.right, crInBox.top), PWLPT_LINETO), 2775e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.90f, crInBox.top), PWLPT_LINETO), 2776e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2777e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* 2778e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left, crBBox.top), PWLPT_MOVETO), 2779e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right, crBBox.top), PWLPT_LINETO), 2780e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right, crBBox.bottom), PWLPT_LINETO), 2781e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left, crBBox.bottom), PWLPT_LINETO), 2782e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left, crBBox.top), PWLPT_LINETO), 2783e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2784e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left+fOutWidth*0.04f, crBBox.top-fOutHeight*0.04f), PWLPT_MOVETO), 2785e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right-fOutWidth*0.04f, crBBox.top-fOutHeight*0.04f), PWLPT_LINETO), 2786e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.right-fOutWidth*0.04f, crBBox.bottom+fOutHeight*0.04f), PWLPT_LINETO), 2787e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left+fOutWidth*0.04f, crBBox.bottom+fOutHeight*0.04f), PWLPT_LINETO), 2788e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_PathData(CPWL_Point(crBBox.left+fOutWidth*0.04f, crBBox.top-fOutHeight*0.04f), PWLPT_LINETO), 2789e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov */ 2790e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov }; 2791e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2792e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov if(type == PWLPT_STREAM) 2793e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sPathData = GetAppStreamFromArray(PathArray, 23); 2794e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov else 2795e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov GetPathDataFromArray(path, PathArray, 23); 2796e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2797e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2798e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovvoid CPWL_Color::ConvertColorType(FX_INT32 nColorType) 2799e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 2800e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (this->nColorType) 2801e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2802e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_TRANSPARENT: 2803e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 2804e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_GRAY: 2805e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (nColorType) 2806e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2807e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_RGB: 2808e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Utils::ConvertGRAY2RGB(this->fColor1, this->fColor1, this->fColor2, this->fColor3); 2809e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 2810e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_CMYK: 2811e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Utils::ConvertGRAY2CMYK(this->fColor1, this->fColor1, this->fColor2, this->fColor3, this->fColor4); 2812e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 2813e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 2814e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 2815e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_RGB: 2816e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (nColorType) 2817e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2818e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_GRAY: 2819e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Utils::ConvertRGB2GRAY(this->fColor1, this->fColor2, this->fColor3, this->fColor1); 2820e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 2821e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_CMYK: 2822e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Utils::ConvertRGB2CMYK(this->fColor1, this->fColor2, this->fColor3, this->fColor1, this->fColor2, this->fColor3, this->fColor4); 2823e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 2824e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 2825e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 2826e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_CMYK: 2827e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov switch (nColorType) 2828e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 2829e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_GRAY: 2830e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Utils::ConvertCMYK2GRAY(this->fColor1, this->fColor2, this->fColor3, this->fColor4, this->fColor1); 2831e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 2832e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov case COLORTYPE_RGB: 2833e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Utils::ConvertCMYK2RGB(this->fColor1, this->fColor2, this->fColor3, this->fColor4, this->fColor1, this->fColor2, this->fColor3); 2834e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 2835e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 2836e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov break; 2837e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 2838e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov this->nColorType = nColorType; 2839e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 2840e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2841e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2842