| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "fpdfsdk/pdfwindow/PWL_Utils.h" | 7 #include "fpdfsdk/pdfwindow/PWL_Utils.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 << " " << pPathData[i + 2].point.x << " " | 37 << " " << pPathData[i + 2].point.x << " " |
| 38 << pPathData[i + 2].point.y << " c\n"; | 38 << pPathData[i + 2].point.y << " c\n"; |
| 39 | 39 |
| 40 i += 2; | 40 i += 2; |
| 41 break; | 41 break; |
| 42 default: | 42 default: |
| 43 break; | 43 break; |
| 44 } | 44 } |
| 45 } | 45 } |
| 46 | 46 |
| 47 return csAP.AsStringC(); | 47 return csAP.MakeString(); |
| 48 } | 48 } |
| 49 | 49 |
| 50 void CPWL_Utils::GetPathDataFromArray(CFX_PathData& path, | 50 void CPWL_Utils::GetPathDataFromArray(CFX_PathData& path, |
| 51 const CPWL_PathData* pPathData, | 51 const CPWL_PathData* pPathData, |
| 52 int32_t nCount) { | 52 int32_t nCount) { |
| 53 path.SetPointCount(nCount); | 53 path.SetPointCount(nCount); |
| 54 | 54 |
| 55 for (int32_t i = 0; i < nCount; i++) { | 55 for (int32_t i = 0; i < nCount; i++) { |
| 56 switch (pPathData[i].type) { | 56 switch (pPathData[i].type) { |
| 57 case PWLPT_MOVETO: | 57 case PWLPT_MOVETO: |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 FX_FLOAT px2 = pts[i][2].x - pts[nNext][0].x; | 178 FX_FLOAT px2 = pts[i][2].x - pts[nNext][0].x; |
| 179 FX_FLOAT py2 = pts[i][2].y - pts[nNext][0].y; | 179 FX_FLOAT py2 = pts[i][2].y - pts[nNext][0].y; |
| 180 | 180 |
| 181 csAP << pts[i][0].x + px1 * FX_BEZIER << " " | 181 csAP << pts[i][0].x + px1 * FX_BEZIER << " " |
| 182 << pts[i][0].y + py1 * FX_BEZIER << " " | 182 << pts[i][0].y + py1 * FX_BEZIER << " " |
| 183 << pts[nNext][0].x + px2 * FX_BEZIER << " " | 183 << pts[nNext][0].x + px2 * FX_BEZIER << " " |
| 184 << pts[nNext][0].y + py2 * FX_BEZIER << " " << pts[nNext][0].x << " " | 184 << pts[nNext][0].y + py2 * FX_BEZIER << " " << pts[nNext][0].x << " " |
| 185 << pts[nNext][0].y << " c\n"; | 185 << pts[nNext][0].y << " c\n"; |
| 186 } | 186 } |
| 187 | 187 |
| 188 return csAP.AsStringC(); | 188 return csAP.MakeString(); |
| 189 } | 189 } |
| 190 | 190 |
| 191 CFX_ByteString CPWL_Utils::GetAP_Circle(const CFX_FloatRect& crBBox) { | 191 CFX_ByteString CPWL_Utils::GetAP_Circle(const CFX_FloatRect& crBBox) { |
| 192 CFX_ByteTextBuf csAP; | 192 CFX_ByteTextBuf csAP; |
| 193 | 193 |
| 194 FX_FLOAT fWidth = crBBox.right - crBBox.left; | 194 FX_FLOAT fWidth = crBBox.right - crBBox.left; |
| 195 FX_FLOAT fHeight = crBBox.top - crBBox.bottom; | 195 FX_FLOAT fHeight = crBBox.top - crBBox.bottom; |
| 196 | 196 |
| 197 CFX_FloatPoint pt1(crBBox.left, crBBox.bottom + fHeight / 2); | 197 CFX_FloatPoint pt1(crBBox.left, crBBox.bottom + fHeight / 2); |
| 198 CFX_FloatPoint pt2(crBBox.left + fWidth / 2, crBBox.top); | 198 CFX_FloatPoint pt2(crBBox.left + fWidth / 2, crBBox.top); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 220 csAP << pt3.x << " " << pt3.y - py * FX_BEZIER << " " | 220 csAP << pt3.x << " " << pt3.y - py * FX_BEZIER << " " |
| 221 << pt4.x + px * FX_BEZIER << " " << pt4.y << " " << pt4.x << " " << pt4.y | 221 << pt4.x + px * FX_BEZIER << " " << pt4.y << " " << pt4.x << " " << pt4.y |
| 222 << " c\n"; | 222 << " c\n"; |
| 223 | 223 |
| 224 px = pt4.x - pt1.x; | 224 px = pt4.x - pt1.x; |
| 225 py = pt1.y - pt4.y; | 225 py = pt1.y - pt4.y; |
| 226 | 226 |
| 227 csAP << pt4.x - px * FX_BEZIER << " " << pt4.y << " " << pt1.x << " " | 227 csAP << pt4.x - px * FX_BEZIER << " " << pt4.y << " " << pt1.x << " " |
| 228 << pt1.y - py * FX_BEZIER << " " << pt1.x << " " << pt1.y << " c\n"; | 228 << pt1.y - py * FX_BEZIER << " " << pt1.x << " " << pt1.y << " c\n"; |
| 229 | 229 |
| 230 return csAP.AsStringC(); | 230 return csAP.MakeString(); |
| 231 } | 231 } |
| 232 | 232 |
| 233 CFX_ByteString CPWL_Utils::GetAP_Cross(const CFX_FloatRect& crBBox) { | 233 CFX_ByteString CPWL_Utils::GetAP_Cross(const CFX_FloatRect& crBBox) { |
| 234 CFX_ByteTextBuf csAP; | 234 CFX_ByteTextBuf csAP; |
| 235 | 235 |
| 236 csAP << crBBox.left << " " << crBBox.top << " m\n"; | 236 csAP << crBBox.left << " " << crBBox.top << " m\n"; |
| 237 csAP << crBBox.right << " " << crBBox.bottom << " l\n"; | 237 csAP << crBBox.right << " " << crBBox.bottom << " l\n"; |
| 238 csAP << crBBox.left << " " << crBBox.bottom << " m\n"; | 238 csAP << crBBox.left << " " << crBBox.bottom << " m\n"; |
| 239 csAP << crBBox.right << " " << crBBox.top << " l\n"; | 239 csAP << crBBox.right << " " << crBBox.top << " l\n"; |
| 240 | 240 |
| 241 return csAP.AsStringC(); | 241 return csAP.MakeString(); |
| 242 } | 242 } |
| 243 | 243 |
| 244 CFX_ByteString CPWL_Utils::GetAP_Diamond(const CFX_FloatRect& crBBox) { | 244 CFX_ByteString CPWL_Utils::GetAP_Diamond(const CFX_FloatRect& crBBox) { |
| 245 CFX_ByteTextBuf csAP; | 245 CFX_ByteTextBuf csAP; |
| 246 | 246 |
| 247 FX_FLOAT fWidth = crBBox.right - crBBox.left; | 247 FX_FLOAT fWidth = crBBox.right - crBBox.left; |
| 248 FX_FLOAT fHeight = crBBox.top - crBBox.bottom; | 248 FX_FLOAT fHeight = crBBox.top - crBBox.bottom; |
| 249 | 249 |
| 250 CFX_FloatPoint pt1(crBBox.left, crBBox.bottom + fHeight / 2); | 250 CFX_FloatPoint pt1(crBBox.left, crBBox.bottom + fHeight / 2); |
| 251 CFX_FloatPoint pt2(crBBox.left + fWidth / 2, crBBox.top); | 251 CFX_FloatPoint pt2(crBBox.left + fWidth / 2, crBBox.top); |
| 252 CFX_FloatPoint pt3(crBBox.right, crBBox.bottom + fHeight / 2); | 252 CFX_FloatPoint pt3(crBBox.right, crBBox.bottom + fHeight / 2); |
| 253 CFX_FloatPoint pt4(crBBox.left + fWidth / 2, crBBox.bottom); | 253 CFX_FloatPoint pt4(crBBox.left + fWidth / 2, crBBox.bottom); |
| 254 | 254 |
| 255 csAP << pt1.x << " " << pt1.y << " m\n"; | 255 csAP << pt1.x << " " << pt1.y << " m\n"; |
| 256 csAP << pt2.x << " " << pt2.y << " l\n"; | 256 csAP << pt2.x << " " << pt2.y << " l\n"; |
| 257 csAP << pt3.x << " " << pt3.y << " l\n"; | 257 csAP << pt3.x << " " << pt3.y << " l\n"; |
| 258 csAP << pt4.x << " " << pt4.y << " l\n"; | 258 csAP << pt4.x << " " << pt4.y << " l\n"; |
| 259 csAP << pt1.x << " " << pt1.y << " l\n"; | 259 csAP << pt1.x << " " << pt1.y << " l\n"; |
| 260 | 260 |
| 261 return csAP.AsStringC(); | 261 return csAP.MakeString(); |
| 262 } | 262 } |
| 263 | 263 |
| 264 CFX_ByteString CPWL_Utils::GetAP_Square(const CFX_FloatRect& crBBox) { | 264 CFX_ByteString CPWL_Utils::GetAP_Square(const CFX_FloatRect& crBBox) { |
| 265 CFX_ByteTextBuf csAP; | 265 CFX_ByteTextBuf csAP; |
| 266 | 266 |
| 267 csAP << crBBox.left << " " << crBBox.top << " m\n"; | 267 csAP << crBBox.left << " " << crBBox.top << " m\n"; |
| 268 csAP << crBBox.right << " " << crBBox.top << " l\n"; | 268 csAP << crBBox.right << " " << crBBox.top << " l\n"; |
| 269 csAP << crBBox.right << " " << crBBox.bottom << " l\n"; | 269 csAP << crBBox.right << " " << crBBox.bottom << " l\n"; |
| 270 csAP << crBBox.left << " " << crBBox.bottom << " l\n"; | 270 csAP << crBBox.left << " " << crBBox.bottom << " l\n"; |
| 271 csAP << crBBox.left << " " << crBBox.top << " l\n"; | 271 csAP << crBBox.left << " " << crBBox.top << " l\n"; |
| 272 | 272 |
| 273 return csAP.AsStringC(); | 273 return csAP.MakeString(); |
| 274 } | 274 } |
| 275 | 275 |
| 276 CFX_ByteString CPWL_Utils::GetAP_Star(const CFX_FloatRect& crBBox) { | 276 CFX_ByteString CPWL_Utils::GetAP_Star(const CFX_FloatRect& crBBox) { |
| 277 CFX_ByteTextBuf csAP; | 277 CFX_ByteTextBuf csAP; |
| 278 | 278 |
| 279 FX_FLOAT fRadius = | 279 FX_FLOAT fRadius = |
| 280 (crBBox.top - crBBox.bottom) / (1 + (FX_FLOAT)cos(FX_PI / 5.0f)); | 280 (crBBox.top - crBBox.bottom) / (1 + (FX_FLOAT)cos(FX_PI / 5.0f)); |
| 281 CFX_FloatPoint ptCenter = CFX_FloatPoint((crBBox.left + crBBox.right) / 2.0f, | 281 CFX_FloatPoint ptCenter = CFX_FloatPoint((crBBox.left + crBBox.right) / 2.0f, |
| 282 (crBBox.top + crBBox.bottom) / 2.0f); | 282 (crBBox.top + crBBox.bottom) / 2.0f); |
| 283 | 283 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 295 csAP << px[0] << " " << py[0] << " m\n"; | 295 csAP << px[0] << " " << py[0] << " m\n"; |
| 296 | 296 |
| 297 int32_t nNext = 0; | 297 int32_t nNext = 0; |
| 298 for (int32_t j = 0; j < 5; j++) { | 298 for (int32_t j = 0; j < 5; j++) { |
| 299 nNext += 2; | 299 nNext += 2; |
| 300 if (nNext >= 5) | 300 if (nNext >= 5) |
| 301 nNext -= 5; | 301 nNext -= 5; |
| 302 csAP << px[nNext] << " " << py[nNext] << " l\n"; | 302 csAP << px[nNext] << " " << py[nNext] << " l\n"; |
| 303 } | 303 } |
| 304 | 304 |
| 305 return csAP.AsStringC(); | 305 return csAP.MakeString(); |
| 306 } | 306 } |
| 307 | 307 |
| 308 CFX_ByteString CPWL_Utils::GetAP_HalfCircle(const CFX_FloatRect& crBBox, | 308 CFX_ByteString CPWL_Utils::GetAP_HalfCircle(const CFX_FloatRect& crBBox, |
| 309 FX_FLOAT fRotate) { | 309 FX_FLOAT fRotate) { |
| 310 CFX_ByteTextBuf csAP; | 310 CFX_ByteTextBuf csAP; |
| 311 | 311 |
| 312 FX_FLOAT fWidth = crBBox.right - crBBox.left; | 312 FX_FLOAT fWidth = crBBox.right - crBBox.left; |
| 313 FX_FLOAT fHeight = crBBox.top - crBBox.bottom; | 313 FX_FLOAT fHeight = crBBox.top - crBBox.bottom; |
| 314 | 314 |
| 315 CFX_FloatPoint pt1(-fWidth / 2, 0); | 315 CFX_FloatPoint pt1(-fWidth / 2, 0); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 330 csAP << pt1.x << " " << pt1.y + py * FX_BEZIER << " " | 330 csAP << pt1.x << " " << pt1.y + py * FX_BEZIER << " " |
| 331 << pt2.x - px * FX_BEZIER << " " << pt2.y << " " << pt2.x << " " << pt2.y | 331 << pt2.x - px * FX_BEZIER << " " << pt2.y << " " << pt2.x << " " << pt2.y |
| 332 << " c\n"; | 332 << " c\n"; |
| 333 | 333 |
| 334 px = pt3.x - pt2.x; | 334 px = pt3.x - pt2.x; |
| 335 py = pt2.y - pt3.y; | 335 py = pt2.y - pt3.y; |
| 336 | 336 |
| 337 csAP << pt2.x + px * FX_BEZIER << " " << pt2.y << " " << pt3.x << " " | 337 csAP << pt2.x + px * FX_BEZIER << " " << pt2.y << " " << pt3.x << " " |
| 338 << pt3.y + py * FX_BEZIER << " " << pt3.x << " " << pt3.y << " c\n"; | 338 << pt3.y + py * FX_BEZIER << " " << pt3.x << " " << pt3.y << " c\n"; |
| 339 | 339 |
| 340 return csAP.AsStringC(); | 340 return csAP.MakeString(); |
| 341 } | 341 } |
| 342 | 342 |
| 343 CFX_FloatRect CPWL_Utils::InflateRect(const CFX_FloatRect& rcRect, | 343 CFX_FloatRect CPWL_Utils::InflateRect(const CFX_FloatRect& rcRect, |
| 344 FX_FLOAT fSize) { | 344 FX_FLOAT fSize) { |
| 345 if (rcRect.IsEmpty()) | 345 if (rcRect.IsEmpty()) |
| 346 return rcRect; | 346 return rcRect; |
| 347 | 347 |
| 348 CFX_FloatRect rcNew(rcRect.left - fSize, rcRect.bottom - fSize, | 348 CFX_FloatRect rcNew(rcRect.left - fSize, rcRect.bottom - fSize, |
| 349 rcRect.right + fSize, rcRect.top + fSize); | 349 rcRect.right + fSize, rcRect.top + fSize); |
| 350 rcNew.Normalize(); | 350 rcNew.Normalize(); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 371 (rcRect.top + rcRect.bottom) / 2); | 371 (rcRect.top + rcRect.bottom) / 2); |
| 372 | 372 |
| 373 return CFX_FloatRect( | 373 return CFX_FloatRect( |
| 374 ptCenter.x - fHalfWidth * fScale, ptCenter.y - fHalfHeight * fScale, | 374 ptCenter.x - fHalfWidth * fScale, ptCenter.y - fHalfHeight * fScale, |
| 375 ptCenter.x + fHalfWidth * fScale, ptCenter.y + fHalfHeight * fScale); | 375 ptCenter.x + fHalfWidth * fScale, ptCenter.y + fHalfHeight * fScale); |
| 376 } | 376 } |
| 377 | 377 |
| 378 CFX_ByteString CPWL_Utils::GetRectFillAppStream(const CFX_FloatRect& rect, | 378 CFX_ByteString CPWL_Utils::GetRectFillAppStream(const CFX_FloatRect& rect, |
| 379 const CPWL_Color& color) { | 379 const CPWL_Color& color) { |
| 380 CFX_ByteTextBuf sAppStream; | 380 CFX_ByteTextBuf sAppStream; |
| 381 | |
| 382 CFX_ByteString sColor = GetColorAppStream(color, TRUE); | 381 CFX_ByteString sColor = GetColorAppStream(color, TRUE); |
| 383 if (sColor.GetLength() > 0) { | 382 if (sColor.GetLength() > 0) { |
| 384 sAppStream << "q\n" << sColor; | 383 sAppStream << "q\n" << sColor; |
| 385 sAppStream << rect.left << " " << rect.bottom << " " | 384 sAppStream << rect.left << " " << rect.bottom << " " |
| 386 << rect.right - rect.left << " " << rect.top - rect.bottom | 385 << rect.right - rect.left << " " << rect.top - rect.bottom |
| 387 << " re f\nQ\n"; | 386 << " re f\nQ\n"; |
| 388 } | 387 } |
| 389 | 388 |
| 390 return sAppStream.AsStringC(); | 389 return sAppStream.MakeString(); |
| 391 } | 390 } |
| 392 | 391 |
| 393 CFX_ByteString CPWL_Utils::GetCircleFillAppStream(const CFX_FloatRect& rect, | 392 CFX_ByteString CPWL_Utils::GetCircleFillAppStream(const CFX_FloatRect& rect, |
| 394 const CPWL_Color& color) { | 393 const CPWL_Color& color) { |
| 395 CFX_ByteTextBuf sAppStream; | 394 CFX_ByteTextBuf sAppStream; |
| 396 | |
| 397 CFX_ByteString sColor = GetColorAppStream(color, TRUE); | 395 CFX_ByteString sColor = GetColorAppStream(color, TRUE); |
| 398 if (sColor.GetLength() > 0) { | 396 if (sColor.GetLength() > 0) { |
| 399 sAppStream << "q\n" << sColor << CPWL_Utils::GetAP_Circle(rect) << "f\nQ\n"; | 397 sAppStream << "q\n" << sColor << CPWL_Utils::GetAP_Circle(rect) << "f\nQ\n"; |
| 400 } | 398 } |
| 401 | 399 return sAppStream.MakeString(); |
| 402 return sAppStream.AsStringC(); | |
| 403 } | 400 } |
| 404 | 401 |
| 405 CFX_FloatRect CPWL_Utils::GetCenterSquare(const CFX_FloatRect& rect) { | 402 CFX_FloatRect CPWL_Utils::GetCenterSquare(const CFX_FloatRect& rect) { |
| 406 FX_FLOAT fWidth = rect.right - rect.left; | 403 FX_FLOAT fWidth = rect.right - rect.left; |
| 407 FX_FLOAT fHeight = rect.top - rect.bottom; | 404 FX_FLOAT fHeight = rect.top - rect.bottom; |
| 408 | 405 |
| 409 FX_FLOAT fCenterX = (rect.left + rect.right) / 2.0f; | 406 FX_FLOAT fCenterX = (rect.left + rect.right) / 2.0f; |
| 410 FX_FLOAT fCenterY = (rect.top + rect.bottom) / 2.0f; | 407 FX_FLOAT fCenterY = (rect.top + rect.bottom) / 2.0f; |
| 411 | 408 |
| 412 FX_FLOAT fRadius = (fWidth > fHeight) ? fHeight / 2 : fWidth / 2; | 409 FX_FLOAT fRadius = (fWidth > fHeight) ? fHeight / 2 : fWidth / 2; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 455 | 452 |
| 456 pEdit->Initialize(); | 453 pEdit->Initialize(); |
| 457 pEdit->SetText(sText.c_str()); | 454 pEdit->SetText(sText.c_str()); |
| 458 | 455 |
| 459 CFX_ByteString sEdit = | 456 CFX_ByteString sEdit = |
| 460 CPWL_Utils::GetEditAppStream(pEdit, CFX_FloatPoint(0.0f, 0.0f)); | 457 CPWL_Utils::GetEditAppStream(pEdit, CFX_FloatPoint(0.0f, 0.0f)); |
| 461 if (sEdit.GetLength() > 0) | 458 if (sEdit.GetLength() > 0) |
| 462 sRet << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit << "ET\n"; | 459 sRet << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit << "ET\n"; |
| 463 IFX_Edit::DelEdit(pEdit); | 460 IFX_Edit::DelEdit(pEdit); |
| 464 | 461 |
| 465 return sRet.AsStringC(); | 462 return sRet.MakeString(); |
| 466 } | 463 } |
| 467 | 464 |
| 468 CFX_ByteString CPWL_Utils::GetPushButtonAppStream(const CFX_FloatRect& rcBBox, | 465 CFX_ByteString CPWL_Utils::GetPushButtonAppStream(const CFX_FloatRect& rcBBox, |
| 469 IPVT_FontMap* pFontMap, | 466 IPVT_FontMap* pFontMap, |
| 470 CPDF_Stream* pIconStream, | 467 CPDF_Stream* pIconStream, |
| 471 CPDF_IconFit& IconFit, | 468 CPDF_IconFit& IconFit, |
| 472 const CFX_WideString& sLabel, | 469 const CFX_WideString& sLabel, |
| 473 const CPWL_Color& crText, | 470 const CPWL_Color& crText, |
| 474 FX_FLOAT fFontSize, | 471 FX_FLOAT fFontSize, |
| 475 int32_t nLayOut) { | 472 int32_t nLayOut) { |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 671 pEdit->SetPlateRect(rcLabel); | 668 pEdit->SetPlateRect(rcLabel); |
| 672 CFX_ByteString sEdit = | 669 CFX_ByteString sEdit = |
| 673 CPWL_Utils::GetEditAppStream(pEdit, CFX_FloatPoint(0.0f, 0.0f)); | 670 CPWL_Utils::GetEditAppStream(pEdit, CFX_FloatPoint(0.0f, 0.0f)); |
| 674 if (sEdit.GetLength() > 0) { | 671 if (sEdit.GetLength() > 0) { |
| 675 sTemp << "BT\n" | 672 sTemp << "BT\n" |
| 676 << CPWL_Utils::GetColorAppStream(crText) << sEdit << "ET\n"; | 673 << CPWL_Utils::GetColorAppStream(crText) << sEdit << "ET\n"; |
| 677 } | 674 } |
| 678 } | 675 } |
| 679 | 676 |
| 680 IFX_Edit::DelEdit(pEdit); | 677 IFX_Edit::DelEdit(pEdit); |
| 681 | |
| 682 if (sTemp.GetSize() > 0) { | 678 if (sTemp.GetSize() > 0) { |
| 683 sAppStream << "q\n" | 679 sAppStream << "q\n" |
| 684 << rcBBox.left << " " << rcBBox.bottom << " " | 680 << rcBBox.left << " " << rcBBox.bottom << " " |
| 685 << rcBBox.right - rcBBox.left << " " | 681 << rcBBox.right - rcBBox.left << " " |
| 686 << rcBBox.top - rcBBox.bottom << " re W n\n"; | 682 << rcBBox.top - rcBBox.bottom << " re W n\n"; |
| 687 sAppStream << sTemp << "Q\n"; | 683 sAppStream << sTemp << "Q\n"; |
| 688 } | 684 } |
| 689 | 685 return sAppStream.MakeString(); |
| 690 return sAppStream.AsStringC(); | |
| 691 } | 686 } |
| 692 | 687 |
| 693 CFX_ByteString CPWL_Utils::GetColorAppStream(const CPWL_Color& color, | 688 CFX_ByteString CPWL_Utils::GetColorAppStream(const CPWL_Color& color, |
| 694 const FX_BOOL& bFillOrStroke) { | 689 const FX_BOOL& bFillOrStroke) { |
| 695 CFX_ByteTextBuf sColorStream; | 690 CFX_ByteTextBuf sColorStream; |
| 696 | 691 |
| 697 switch (color.nColorType) { | 692 switch (color.nColorType) { |
| 698 case COLORTYPE_RGB: | 693 case COLORTYPE_RGB: |
| 699 sColorStream << color.fColor1 << " " << color.fColor2 << " " | 694 sColorStream << color.fColor1 << " " << color.fColor2 << " " |
| 700 << color.fColor3 << " " << (bFillOrStroke ? "rg" : "RG") | 695 << color.fColor3 << " " << (bFillOrStroke ? "rg" : "RG") |
| 701 << "\n"; | 696 << "\n"; |
| 702 break; | 697 break; |
| 703 case COLORTYPE_GRAY: | 698 case COLORTYPE_GRAY: |
| 704 sColorStream << color.fColor1 << " " << (bFillOrStroke ? "g" : "G") | 699 sColorStream << color.fColor1 << " " << (bFillOrStroke ? "g" : "G") |
| 705 << "\n"; | 700 << "\n"; |
| 706 break; | 701 break; |
| 707 case COLORTYPE_CMYK: | 702 case COLORTYPE_CMYK: |
| 708 sColorStream << color.fColor1 << " " << color.fColor2 << " " | 703 sColorStream << color.fColor1 << " " << color.fColor2 << " " |
| 709 << color.fColor3 << " " << color.fColor4 << " " | 704 << color.fColor3 << " " << color.fColor4 << " " |
| 710 << (bFillOrStroke ? "k" : "K") << "\n"; | 705 << (bFillOrStroke ? "k" : "K") << "\n"; |
| 711 break; | 706 break; |
| 712 } | 707 } |
| 713 | 708 |
| 714 return sColorStream.AsStringC(); | 709 return sColorStream.MakeString(); |
| 715 } | 710 } |
| 716 | 711 |
| 717 CFX_ByteString CPWL_Utils::GetBorderAppStream(const CFX_FloatRect& rect, | 712 CFX_ByteString CPWL_Utils::GetBorderAppStream(const CFX_FloatRect& rect, |
| 718 FX_FLOAT fWidth, | 713 FX_FLOAT fWidth, |
| 719 const CPWL_Color& color, | 714 const CPWL_Color& color, |
| 720 const CPWL_Color& crLeftTop, | 715 const CPWL_Color& crLeftTop, |
| 721 const CPWL_Color& crRightBottom, | 716 const CPWL_Color& crRightBottom, |
| 722 int32_t nStyle, | 717 int32_t nStyle, |
| 723 const CPWL_Dash& dash) { | 718 const CPWL_Dash& dash) { |
| 724 CFX_ByteTextBuf sAppStream; | 719 CFX_ByteTextBuf sAppStream; |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 sAppStream << fWidth << " w\n"; | 815 sAppStream << fWidth << " w\n"; |
| 821 sAppStream << fLeft << " " << fBottom + fWidth / 2 << " m\n"; | 816 sAppStream << fLeft << " " << fBottom + fWidth / 2 << " m\n"; |
| 822 sAppStream << fRight << " " << fBottom + fWidth / 2 << " l S\n"; | 817 sAppStream << fRight << " " << fBottom + fWidth / 2 << " l S\n"; |
| 823 } | 818 } |
| 824 break; | 819 break; |
| 825 } | 820 } |
| 826 | 821 |
| 827 sAppStream << "Q\n"; | 822 sAppStream << "Q\n"; |
| 828 } | 823 } |
| 829 | 824 |
| 830 return sAppStream.AsStringC(); | 825 return sAppStream.MakeString(); |
| 831 } | 826 } |
| 832 | 827 |
| 833 CFX_ByteString CPWL_Utils::GetCircleBorderAppStream( | 828 CFX_ByteString CPWL_Utils::GetCircleBorderAppStream( |
| 834 const CFX_FloatRect& rect, | 829 const CFX_FloatRect& rect, |
| 835 FX_FLOAT fWidth, | 830 FX_FLOAT fWidth, |
| 836 const CPWL_Color& color, | 831 const CPWL_Color& color, |
| 837 const CPWL_Color& crLeftTop, | 832 const CPWL_Color& crLeftTop, |
| 838 const CPWL_Color& crRightBottom, | 833 const CPWL_Color& crRightBottom, |
| 839 int32_t nStyle, | 834 int32_t nStyle, |
| 840 const CPWL_Dash& dash) { | 835 const CPWL_Dash& dash) { |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 919 CPWL_Utils::DeflateRect(rect, fHalfWidth * 0.75f), | 914 CPWL_Utils::DeflateRect(rect, fHalfWidth * 0.75f), |
| 920 FX_PI * 5 / 4.0f) | 915 FX_PI * 5 / 4.0f) |
| 921 << " S\nQ\n"; | 916 << " S\nQ\n"; |
| 922 } | 917 } |
| 923 } break; | 918 } break; |
| 924 } | 919 } |
| 925 | 920 |
| 926 sAppStream << "Q\n"; | 921 sAppStream << "Q\n"; |
| 927 } | 922 } |
| 928 | 923 |
| 929 return sAppStream.AsStringC(); | 924 return sAppStream.MakeString(); |
| 930 } | 925 } |
| 931 | 926 |
| 932 CPWL_Color CPWL_Utils::SubstractColor(const CPWL_Color& sColor, | 927 CPWL_Color CPWL_Utils::SubstractColor(const CPWL_Color& sColor, |
| 933 FX_FLOAT fColorSub) { | 928 FX_FLOAT fColorSub) { |
| 934 CPWL_Color sRet; | 929 CPWL_Color sRet; |
| 935 sRet.nColorType = sColor.nColorType; | 930 sRet.nColorType = sColor.nColorType; |
| 936 | 931 |
| 937 switch (sColor.nColorType) { | 932 switch (sColor.nColorType) { |
| 938 case COLORTYPE_TRANSPARENT: | 933 case COLORTYPE_TRANSPARENT: |
| 939 sRet.nColorType = COLORTYPE_RGB; | 934 sRet.nColorType = COLORTYPE_RGB; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 978 } | 973 } |
| 979 | 974 |
| 980 return sRet; | 975 return sRet; |
| 981 } | 976 } |
| 982 | 977 |
| 983 CFX_ByteString CPWL_Utils::GetAppStream_Check(const CFX_FloatRect& rcBBox, | 978 CFX_ByteString CPWL_Utils::GetAppStream_Check(const CFX_FloatRect& rcBBox, |
| 984 const CPWL_Color& crText) { | 979 const CPWL_Color& crText) { |
| 985 CFX_ByteTextBuf sAP; | 980 CFX_ByteTextBuf sAP; |
| 986 sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, TRUE) | 981 sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, TRUE) |
| 987 << CPWL_Utils::GetAP_Check(rcBBox) << "f\nQ\n"; | 982 << CPWL_Utils::GetAP_Check(rcBBox) << "f\nQ\n"; |
| 988 return sAP.AsStringC(); | 983 return sAP.MakeString(); |
| 989 } | 984 } |
| 990 | 985 |
| 991 CFX_ByteString CPWL_Utils::GetAppStream_Circle(const CFX_FloatRect& rcBBox, | 986 CFX_ByteString CPWL_Utils::GetAppStream_Circle(const CFX_FloatRect& rcBBox, |
| 992 const CPWL_Color& crText) { | 987 const CPWL_Color& crText) { |
| 993 CFX_ByteTextBuf sAP; | 988 CFX_ByteTextBuf sAP; |
| 994 sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, TRUE) | 989 sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, TRUE) |
| 995 << CPWL_Utils::GetAP_Circle(rcBBox) << "f\nQ\n"; | 990 << CPWL_Utils::GetAP_Circle(rcBBox) << "f\nQ\n"; |
| 996 return sAP.AsStringC(); | 991 return sAP.MakeString(); |
| 997 } | 992 } |
| 998 | 993 |
| 999 CFX_ByteString CPWL_Utils::GetAppStream_Cross(const CFX_FloatRect& rcBBox, | 994 CFX_ByteString CPWL_Utils::GetAppStream_Cross(const CFX_FloatRect& rcBBox, |
| 1000 const CPWL_Color& crText) { | 995 const CPWL_Color& crText) { |
| 1001 CFX_ByteTextBuf sAP; | 996 CFX_ByteTextBuf sAP; |
| 1002 sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, FALSE) | 997 sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, FALSE) |
| 1003 << CPWL_Utils::GetAP_Cross(rcBBox) << "S\nQ\n"; | 998 << CPWL_Utils::GetAP_Cross(rcBBox) << "S\nQ\n"; |
| 1004 return sAP.AsStringC(); | 999 return sAP.MakeString(); |
| 1005 } | 1000 } |
| 1006 | 1001 |
| 1007 CFX_ByteString CPWL_Utils::GetAppStream_Diamond(const CFX_FloatRect& rcBBox, | 1002 CFX_ByteString CPWL_Utils::GetAppStream_Diamond(const CFX_FloatRect& rcBBox, |
| 1008 const CPWL_Color& crText) { | 1003 const CPWL_Color& crText) { |
| 1009 CFX_ByteTextBuf sAP; | 1004 CFX_ByteTextBuf sAP; |
| 1010 sAP << "q\n1 w\n" << CPWL_Utils::GetColorAppStream(crText, TRUE) | 1005 sAP << "q\n1 w\n" << CPWL_Utils::GetColorAppStream(crText, TRUE) |
| 1011 << CPWL_Utils::GetAP_Diamond(rcBBox) << "f\nQ\n"; | 1006 << CPWL_Utils::GetAP_Diamond(rcBBox) << "f\nQ\n"; |
| 1012 return sAP.AsStringC(); | 1007 return sAP.MakeString(); |
| 1013 } | 1008 } |
| 1014 | 1009 |
| 1015 CFX_ByteString CPWL_Utils::GetAppStream_Square(const CFX_FloatRect& rcBBox, | 1010 CFX_ByteString CPWL_Utils::GetAppStream_Square(const CFX_FloatRect& rcBBox, |
| 1016 const CPWL_Color& crText) { | 1011 const CPWL_Color& crText) { |
| 1017 CFX_ByteTextBuf sAP; | 1012 CFX_ByteTextBuf sAP; |
| 1018 sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, TRUE) | 1013 sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, TRUE) |
| 1019 << CPWL_Utils::GetAP_Square(rcBBox) << "f\nQ\n"; | 1014 << CPWL_Utils::GetAP_Square(rcBBox) << "f\nQ\n"; |
| 1020 return sAP.AsStringC(); | 1015 return sAP.MakeString(); |
| 1021 } | 1016 } |
| 1022 | 1017 |
| 1023 CFX_ByteString CPWL_Utils::GetAppStream_Star(const CFX_FloatRect& rcBBox, | 1018 CFX_ByteString CPWL_Utils::GetAppStream_Star(const CFX_FloatRect& rcBBox, |
| 1024 const CPWL_Color& crText) { | 1019 const CPWL_Color& crText) { |
| 1025 CFX_ByteTextBuf sAP; | 1020 CFX_ByteTextBuf sAP; |
| 1026 sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, TRUE) | 1021 sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, TRUE) |
| 1027 << CPWL_Utils::GetAP_Star(rcBBox) << "f\nQ\n"; | 1022 << CPWL_Utils::GetAP_Star(rcBBox) << "f\nQ\n"; |
| 1028 return sAP.AsStringC(); | 1023 return sAP.MakeString(); |
| 1029 } | 1024 } |
| 1030 | 1025 |
| 1031 CFX_ByteString CPWL_Utils::GetCheckBoxAppStream(const CFX_FloatRect& rcBBox, | 1026 CFX_ByteString CPWL_Utils::GetCheckBoxAppStream(const CFX_FloatRect& rcBBox, |
| 1032 int32_t nStyle, | 1027 int32_t nStyle, |
| 1033 const CPWL_Color& crText) { | 1028 const CPWL_Color& crText) { |
| 1034 CFX_FloatRect rcCenter = GetCenterSquare(rcBBox); | 1029 CFX_FloatRect rcCenter = GetCenterSquare(rcBBox); |
| 1035 switch (nStyle) { | 1030 switch (nStyle) { |
| 1036 default: | 1031 default: |
| 1037 case PCS_CHECK: | 1032 case PCS_CHECK: |
| 1038 return GetAppStream_Check(rcCenter, crText); | 1033 return GetAppStream_Check(rcCenter, crText); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1097 sAppStream << "q\n" | 1092 sAppStream << "q\n" |
| 1098 << " 0 g\n"; | 1093 << " 0 g\n"; |
| 1099 sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " m\n"; | 1094 sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " m\n"; |
| 1100 sAppStream << ptCenter.x + 3 << " " << ptCenter.y + 1.5f << " l\n"; | 1095 sAppStream << ptCenter.x + 3 << " " << ptCenter.y + 1.5f << " l\n"; |
| 1101 sAppStream << ptCenter.x << " " << ptCenter.y - 1.5f << " l\n"; | 1096 sAppStream << ptCenter.x << " " << ptCenter.y - 1.5f << " l\n"; |
| 1102 sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " l f\n"; | 1097 sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " l f\n"; |
| 1103 sAppStream << "Q\n"; | 1098 sAppStream << "Q\n"; |
| 1104 } | 1099 } |
| 1105 } | 1100 } |
| 1106 | 1101 |
| 1107 return sAppStream.AsStringC(); | 1102 return sAppStream.MakeString(); |
| 1108 } | 1103 } |
| 1109 | 1104 |
| 1110 void CPWL_Utils::ConvertCMYK2GRAY(FX_FLOAT dC, | 1105 void CPWL_Utils::ConvertCMYK2GRAY(FX_FLOAT dC, |
| 1111 FX_FLOAT dM, | 1106 FX_FLOAT dM, |
| 1112 FX_FLOAT dY, | 1107 FX_FLOAT dY, |
| 1113 FX_FLOAT dK, | 1108 FX_FLOAT dK, |
| 1114 FX_FLOAT& dGray) { | 1109 FX_FLOAT& dGray) { |
| 1115 if (dC < 0 || dC > 1 || dM < 0 || dM > 1 || dY < 0 || dY > 1 || dK < 0 || | 1110 if (dC < 0 || dC > 1 || dM < 0 || dM > 1 || dY < 0 || dY > 1 || dK < 0 || |
| 1116 dK > 1) | 1111 dK > 1) |
| 1117 return; | 1112 return; |
| (...skipping 2238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3356 break; | 3351 break; |
| 3357 case COLORTYPE_RGB: | 3352 case COLORTYPE_RGB: |
| 3358 CPWL_Utils::ConvertCMYK2RGB(fColor1, fColor2, fColor3, fColor4, | 3353 CPWL_Utils::ConvertCMYK2RGB(fColor1, fColor2, fColor3, fColor4, |
| 3359 fColor1, fColor2, fColor3); | 3354 fColor1, fColor2, fColor3); |
| 3360 break; | 3355 break; |
| 3361 } | 3356 } |
| 3362 break; | 3357 break; |
| 3363 } | 3358 } |
| 3364 nColorType = other_nColorType; | 3359 nColorType = other_nColorType; |
| 3365 } | 3360 } |
| OLD | NEW |