OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "core/include/fxcodec/fx_codec.h" | 7 #include "core/include/fxcodec/fx_codec.h" |
8 #include "core/include/fxge/fx_dib.h" | 8 #include "core/include/fxge/fx_dib.h" |
9 #include "core/include/fxge/fx_ge.h" | 9 #include "core/include/fxge/fx_ge.h" |
10 | 10 |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 _Qsort(m_aLut, m_cLut, 0, m_lut - 1); | 246 _Qsort(m_aLut, m_cLut, 0, m_lut - 1); |
247 FX_DWORD* win_mac_pal = NULL; | 247 FX_DWORD* win_mac_pal = NULL; |
248 if (pal_type == FXDIB_PALETTE_WIN) { | 248 if (pal_type == FXDIB_PALETTE_WIN) { |
249 win_mac_pal = (FX_DWORD*)g_dwWinPalette; | 249 win_mac_pal = (FX_DWORD*)g_dwWinPalette; |
250 } else if (pal_type == FXDIB_PALETTE_MAC) { | 250 } else if (pal_type == FXDIB_PALETTE_MAC) { |
251 win_mac_pal = (FX_DWORD*)g_dwMacPalette; | 251 win_mac_pal = (FX_DWORD*)g_dwMacPalette; |
252 } | 252 } |
253 _Obtain_Pal(m_aLut, m_cLut, m_pPalette, pal_type, win_mac_pal, m_lut); | 253 _Obtain_Pal(m_aLut, m_cLut, m_pPalette, pal_type, win_mac_pal, m_lut); |
254 return TRUE; | 254 return TRUE; |
255 } | 255 } |
256 FX_BOOL _ConvertBuffer_1bppMask2Gray(uint8_t* dest_buf, | 256 FX_BOOL ConvertBuffer_1bppMask2Gray(uint8_t* dest_buf, |
257 int dest_pitch, | 257 int dest_pitch, |
258 int width, | 258 int width, |
259 int height, | 259 int height, |
260 const CFX_DIBSource* pSrcBitmap, | 260 const CFX_DIBSource* pSrcBitmap, |
261 int src_left, | 261 int src_left, |
262 int src_top) { | 262 int src_top) { |
263 uint8_t set_gray, reset_gray; | 263 uint8_t set_gray, reset_gray; |
264 set_gray = 0xff; | 264 set_gray = 0xff; |
265 reset_gray = 0x00; | 265 reset_gray = 0x00; |
266 for (int row = 0; row < height; row++) { | 266 for (int row = 0; row < height; row++) { |
267 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 267 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
268 FXSYS_memset(dest_scan, reset_gray, width); | 268 FXSYS_memset(dest_scan, reset_gray, width); |
269 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); | 269 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); |
270 for (int col = src_left; col < src_left + width; col++) { | 270 for (int col = src_left; col < src_left + width; col++) { |
271 if (src_scan[col / 8] & (1 << (7 - col % 8))) { | 271 if (src_scan[col / 8] & (1 << (7 - col % 8))) { |
272 *dest_scan = set_gray; | 272 *dest_scan = set_gray; |
273 } | 273 } |
274 dest_scan++; | 274 dest_scan++; |
275 } | 275 } |
276 } | 276 } |
277 return TRUE; | 277 return TRUE; |
278 } | 278 } |
279 FX_BOOL _ConvertBuffer_8bppMask2Gray(uint8_t* dest_buf, | 279 FX_BOOL ConvertBuffer_8bppMask2Gray(uint8_t* dest_buf, |
280 int dest_pitch, | 280 int dest_pitch, |
281 int width, | 281 int width, |
282 int height, | 282 int height, |
283 const CFX_DIBSource* pSrcBitmap, | 283 const CFX_DIBSource* pSrcBitmap, |
284 int src_left, | 284 int src_left, |
285 int src_top) { | 285 int src_top) { |
286 for (int row = 0; row < height; row++) { | 286 for (int row = 0; row < height; row++) { |
287 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 287 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
288 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; | 288 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; |
289 FXSYS_memcpy(dest_scan, src_scan, width); | 289 FXSYS_memcpy(dest_scan, src_scan, width); |
290 } | 290 } |
291 return TRUE; | 291 return TRUE; |
292 } | 292 } |
293 FX_BOOL _ConvertBuffer_1bppPlt2Gray(uint8_t* dest_buf, | 293 FX_BOOL ConvertBuffer_1bppPlt2Gray(uint8_t* dest_buf, |
294 int dest_pitch, | 294 int dest_pitch, |
295 int width, | 295 int width, |
296 int height, | 296 int height, |
297 const CFX_DIBSource* pSrcBitmap, | 297 const CFX_DIBSource* pSrcBitmap, |
298 int src_left, | 298 int src_left, |
299 int src_top, | 299 int src_top, |
300 void* pIccTransform) { | 300 void* pIccTransform) { |
301 FX_DWORD* src_plt = pSrcBitmap->GetPalette(); | 301 FX_DWORD* src_plt = pSrcBitmap->GetPalette(); |
302 uint8_t gray[2]; | 302 uint8_t gray[2]; |
303 if (pIccTransform) { | 303 if (pIccTransform) { |
304 FX_DWORD plt[2]; | 304 FX_DWORD plt[2]; |
305 if (pSrcBitmap->IsCmykImage()) { | 305 if (pSrcBitmap->IsCmykImage()) { |
306 plt[0] = FXCMYK_TODIB(src_plt[0]); | 306 plt[0] = FXCMYK_TODIB(src_plt[0]); |
307 plt[1] = FXCMYK_TODIB(src_plt[1]); | 307 plt[1] = FXCMYK_TODIB(src_plt[1]); |
308 } else { | 308 } else { |
309 uint8_t* bgr_ptr = (uint8_t*)plt; | 309 uint8_t* bgr_ptr = (uint8_t*)plt; |
310 bgr_ptr[0] = FXARGB_B(src_plt[0]); | 310 bgr_ptr[0] = FXARGB_B(src_plt[0]); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); | 345 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); |
346 for (int col = src_left; col < src_left + width; col++) { | 346 for (int col = src_left; col < src_left + width; col++) { |
347 if (src_scan[col / 8] & (1 << (7 - col % 8))) { | 347 if (src_scan[col / 8] & (1 << (7 - col % 8))) { |
348 *dest_scan = gray[1]; | 348 *dest_scan = gray[1]; |
349 } | 349 } |
350 dest_scan++; | 350 dest_scan++; |
351 } | 351 } |
352 } | 352 } |
353 return TRUE; | 353 return TRUE; |
354 } | 354 } |
355 FX_BOOL _ConvertBuffer_8bppPlt2Gray(uint8_t* dest_buf, | 355 FX_BOOL ConvertBuffer_8bppPlt2Gray(uint8_t* dest_buf, |
356 int dest_pitch, | 356 int dest_pitch, |
357 int width, | 357 int width, |
358 int height, | 358 int height, |
359 const CFX_DIBSource* pSrcBitmap, | 359 const CFX_DIBSource* pSrcBitmap, |
360 int src_left, | 360 int src_left, |
361 int src_top, | 361 int src_top, |
362 void* pIccTransform) { | 362 void* pIccTransform) { |
363 FX_DWORD* src_plt = pSrcBitmap->GetPalette(); | 363 FX_DWORD* src_plt = pSrcBitmap->GetPalette(); |
364 uint8_t gray[256]; | 364 uint8_t gray[256]; |
365 if (pIccTransform) { | 365 if (pIccTransform) { |
366 FX_DWORD plt[256]; | 366 FX_DWORD plt[256]; |
367 if (pSrcBitmap->IsCmykImage()) { | 367 if (pSrcBitmap->IsCmykImage()) { |
368 for (int i = 0; i < 256; i++) { | 368 for (int i = 0; i < 256; i++) { |
369 plt[i] = FXCMYK_TODIB(src_plt[i]); | 369 plt[i] = FXCMYK_TODIB(src_plt[i]); |
370 } | 370 } |
371 } else { | 371 } else { |
372 uint8_t* bgr_ptr = (uint8_t*)plt; | 372 uint8_t* bgr_ptr = (uint8_t*)plt; |
(...skipping 24 matching lines...) Expand all Loading... |
397 } | 397 } |
398 for (int row = 0; row < height; row++) { | 398 for (int row = 0; row < height; row++) { |
399 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 399 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
400 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; | 400 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; |
401 for (int col = 0; col < width; col++) { | 401 for (int col = 0; col < width; col++) { |
402 *dest_scan++ = gray[*src_scan++]; | 402 *dest_scan++ = gray[*src_scan++]; |
403 } | 403 } |
404 } | 404 } |
405 return TRUE; | 405 return TRUE; |
406 } | 406 } |
407 FX_BOOL _ConvertBuffer_RgbOrCmyk2Gray(uint8_t* dest_buf, | 407 FX_BOOL ConvertBuffer_RgbOrCmyk2Gray(uint8_t* dest_buf, |
408 int dest_pitch, | 408 int dest_pitch, |
409 int width, | 409 int width, |
410 int height, | 410 int height, |
411 const CFX_DIBSource* pSrcBitmap, | 411 const CFX_DIBSource* pSrcBitmap, |
412 int src_left, | 412 int src_left, |
413 int src_top, | 413 int src_top, |
414 void* pIccTransform) { | 414 void* pIccTransform) { |
415 int Bpp = pSrcBitmap->GetBPP() / 8; | 415 int Bpp = pSrcBitmap->GetBPP() / 8; |
416 if (pIccTransform) { | 416 if (pIccTransform) { |
417 ICodec_IccModule* pIccModule = | 417 ICodec_IccModule* pIccModule = |
418 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); | 418 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); |
419 if (Bpp == 3 || pSrcBitmap->IsCmykImage()) { | 419 if (Bpp == 3 || pSrcBitmap->IsCmykImage()) { |
420 for (int row = 0; row < height; row++) { | 420 for (int row = 0; row < height; row++) { |
421 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 421 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
422 const uint8_t* src_scan = | 422 const uint8_t* src_scan = |
423 pSrcBitmap->GetScanline(src_top + row) + src_left * Bpp; | 423 pSrcBitmap->GetScanline(src_top + row) + src_left * Bpp; |
424 pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, | 424 pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 pSrcBitmap->GetScanline(src_top + row) + src_left * Bpp; | 459 pSrcBitmap->GetScanline(src_top + row) + src_left * Bpp; |
460 for (int col = 0; col < width; col++) { | 460 for (int col = 0; col < width; col++) { |
461 *dest_scan++ = FXRGB2GRAY(src_scan[2], src_scan[1], src_scan[0]); | 461 *dest_scan++ = FXRGB2GRAY(src_scan[2], src_scan[1], src_scan[0]); |
462 src_scan += Bpp; | 462 src_scan += Bpp; |
463 } | 463 } |
464 } | 464 } |
465 } | 465 } |
466 } | 466 } |
467 return TRUE; | 467 return TRUE; |
468 } | 468 } |
469 inline void _ConvertBuffer_IndexCopy(uint8_t* dest_buf, | 469 inline void ConvertBuffer_IndexCopy(uint8_t* dest_buf, |
470 int dest_pitch, | 470 int dest_pitch, |
471 int width, | 471 int width, |
472 int height, | 472 int height, |
473 const CFX_DIBSource* pSrcBitmap, | 473 const CFX_DIBSource* pSrcBitmap, |
474 int src_left, | 474 int src_left, |
475 int src_top) { | 475 int src_top) { |
476 if (pSrcBitmap->GetBPP() == 1) { | 476 if (pSrcBitmap->GetBPP() == 1) { |
477 for (int row = 0; row < height; row++) { | 477 for (int row = 0; row < height; row++) { |
478 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 478 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
479 FXSYS_memset(dest_scan, 0, width); | 479 FXSYS_memset(dest_scan, 0, width); |
480 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); | 480 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); |
481 for (int col = src_left; col < src_left + width; col++) { | 481 for (int col = src_left; col < src_left + width; col++) { |
482 if (src_scan[col / 8] & (1 << (7 - col % 8))) { | 482 if (src_scan[col / 8] & (1 << (7 - col % 8))) { |
483 *dest_scan = 1; | 483 *dest_scan = 1; |
484 } | 484 } |
485 dest_scan++; | 485 dest_scan++; |
486 } | 486 } |
487 } | 487 } |
488 } else { | 488 } else { |
489 for (int row = 0; row < height; row++) { | 489 for (int row = 0; row < height; row++) { |
490 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 490 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
491 const uint8_t* src_scan = | 491 const uint8_t* src_scan = |
492 pSrcBitmap->GetScanline(src_top + row) + src_left; | 492 pSrcBitmap->GetScanline(src_top + row) + src_left; |
493 FXSYS_memcpy(dest_scan, src_scan, width); | 493 FXSYS_memcpy(dest_scan, src_scan, width); |
494 } | 494 } |
495 } | 495 } |
496 } | 496 } |
497 FX_BOOL _ConvertBuffer_Plt2PltRgb8(uint8_t* dest_buf, | 497 FX_BOOL ConvertBuffer_Plt2PltRgb8(uint8_t* dest_buf, |
498 int dest_pitch, | 498 int dest_pitch, |
499 int width, | 499 int width, |
500 int height, | 500 int height, |
501 const CFX_DIBSource* pSrcBitmap, | 501 const CFX_DIBSource* pSrcBitmap, |
502 int src_left, | 502 int src_left, |
503 int src_top, | 503 int src_top, |
504 FX_DWORD* dst_plt, | 504 FX_DWORD* dst_plt, |
505 void* pIccTransform) { | 505 void* pIccTransform) { |
506 _ConvertBuffer_IndexCopy(dest_buf, dest_pitch, width, height, pSrcBitmap, | 506 ConvertBuffer_IndexCopy(dest_buf, dest_pitch, width, height, pSrcBitmap, |
507 src_left, src_top); | 507 src_left, src_top); |
508 FX_DWORD* src_plt = pSrcBitmap->GetPalette(); | 508 FX_DWORD* src_plt = pSrcBitmap->GetPalette(); |
509 int plt_size = pSrcBitmap->GetPaletteSize(); | 509 int plt_size = pSrcBitmap->GetPaletteSize(); |
510 if (pIccTransform) { | 510 if (pIccTransform) { |
511 FX_DWORD plt[256]; | 511 FX_DWORD plt[256]; |
512 uint8_t* bgr_ptr = (uint8_t*)plt; | 512 uint8_t* bgr_ptr = (uint8_t*)plt; |
513 if (pSrcBitmap->IsCmykImage()) { | 513 if (pSrcBitmap->IsCmykImage()) { |
514 for (int i = 0; i < plt_size; i++) { | 514 for (int i = 0; i < plt_size; i++) { |
515 plt[i] = FXCMYK_TODIB(src_plt[i]); | 515 plt[i] = FXCMYK_TODIB(src_plt[i]); |
516 } | 516 } |
517 } else { | 517 } else { |
(...skipping 20 matching lines...) Expand all Loading... |
538 FXSYS_GetCValue(src_plt[i]), FXSYS_GetMValue(src_plt[i]), | 538 FXSYS_GetCValue(src_plt[i]), FXSYS_GetMValue(src_plt[i]), |
539 FXSYS_GetYValue(src_plt[i]), FXSYS_GetKValue(src_plt[i]), r, g, b); | 539 FXSYS_GetYValue(src_plt[i]), FXSYS_GetKValue(src_plt[i]), r, g, b); |
540 dst_plt[i] = FXARGB_MAKE(0xff, r, g, b); | 540 dst_plt[i] = FXARGB_MAKE(0xff, r, g, b); |
541 } | 541 } |
542 } else { | 542 } else { |
543 FXSYS_memcpy(dst_plt, src_plt, plt_size * 4); | 543 FXSYS_memcpy(dst_plt, src_plt, plt_size * 4); |
544 } | 544 } |
545 } | 545 } |
546 return TRUE; | 546 return TRUE; |
547 } | 547 } |
548 inline FX_BOOL _ConvertBuffer_Rgb2PltRgb8_NoTransform( | 548 FX_BOOL ConvertBuffer_Rgb2PltRgb8_NoTransform(uint8_t* dest_buf, |
549 uint8_t* dest_buf, | 549 int dest_pitch, |
550 int dest_pitch, | 550 int width, |
551 int width, | 551 int height, |
552 int height, | 552 const CFX_DIBSource* pSrcBitmap, |
553 const CFX_DIBSource* pSrcBitmap, | 553 int src_left, |
554 int src_left, | 554 int src_top, |
555 int src_top, | 555 FX_DWORD* dst_plt) { |
556 FX_DWORD* dst_plt) { | |
557 int bpp = pSrcBitmap->GetBPP() / 8; | 556 int bpp = pSrcBitmap->GetBPP() / 8; |
558 int row, col; | 557 int row, col; |
559 CFX_Palette palette; | 558 CFX_Palette palette; |
560 palette.BuildPalette(pSrcBitmap, FXDIB_PALETTE_LOC); | 559 palette.BuildPalette(pSrcBitmap, FXDIB_PALETTE_LOC); |
561 FX_DWORD* cLut = palette.GetColorLut(); | 560 FX_DWORD* cLut = palette.GetColorLut(); |
562 FX_DWORD* aLut = palette.GetAmountLut(); | 561 FX_DWORD* aLut = palette.GetAmountLut(); |
563 if (!cLut || !aLut) { | 562 if (!cLut || !aLut) { |
564 return FALSE; | 563 return FALSE; |
565 } | 564 } |
566 int lut = palette.Getlut(); | 565 int lut = palette.Getlut(); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 for (int i = lut_1; i >= 0; i--) | 600 for (int i = lut_1; i >= 0; i--) |
602 if (clrindex == cLut[i]) { | 601 if (clrindex == cLut[i]) { |
603 *(dest_scan + col) = (uint8_t)(aLut[i]); | 602 *(dest_scan + col) = (uint8_t)(aLut[i]); |
604 break; | 603 break; |
605 } | 604 } |
606 } | 605 } |
607 } | 606 } |
608 FXSYS_memcpy(dst_plt, pPalette, sizeof(FX_DWORD) * 256); | 607 FXSYS_memcpy(dst_plt, pPalette, sizeof(FX_DWORD) * 256); |
609 return TRUE; | 608 return TRUE; |
610 } | 609 } |
611 FX_BOOL _ConvertBuffer_Rgb2PltRgb8(uint8_t* dest_buf, | 610 FX_BOOL ConvertBuffer_Rgb2PltRgb8(uint8_t* dest_buf, |
612 int dest_pitch, | 611 int dest_pitch, |
613 int width, | 612 int width, |
614 int height, | 613 int height, |
615 const CFX_DIBSource* pSrcBitmap, | 614 const CFX_DIBSource* pSrcBitmap, |
616 int src_left, | 615 int src_left, |
617 int src_top, | 616 int src_top, |
618 FX_DWORD* dst_plt, | 617 FX_DWORD* dst_plt, |
619 void* pIccTransform) { | 618 void* pIccTransform) { |
620 #ifdef PDF_ENABLE_XFA | 619 FX_BOOL ret = ConvertBuffer_Rgb2PltRgb8_NoTransform( |
621 ICodec_IccModule* pIccModule = NULL; | |
622 if (pIccTransform) { | |
623 pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); | |
624 } | |
625 #endif // PDF_ENABLE_XFA | |
626 FX_BOOL ret = _ConvertBuffer_Rgb2PltRgb8_NoTransform( | |
627 dest_buf, dest_pitch, width, height, pSrcBitmap, src_left, src_top, | 620 dest_buf, dest_pitch, width, height, pSrcBitmap, src_left, src_top, |
628 dst_plt); | 621 dst_plt); |
629 if (ret && pIccTransform) { | 622 if (ret && pIccTransform) { |
630 ICodec_IccModule* pIccModule = | 623 ICodec_IccModule* pIccModule = |
631 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); | 624 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); |
632 for (int i = 0; i < 256; i++) { | 625 for (int i = 0; i < 256; i++) { |
633 FX_ARGB* plt = dst_plt + i; | 626 FX_ARGB* plt = dst_plt + i; |
634 FX_ARGB plt_entry = FXARGB_TODIB(*plt); | 627 FX_ARGB plt_entry = FXARGB_TODIB(*plt); |
635 pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&plt_entry, | 628 pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&plt_entry, |
636 (const uint8_t*)&plt_entry, 1); | 629 (const uint8_t*)&plt_entry, 1); |
637 *plt = FXARGB_TODIB(plt_entry); | 630 *plt = FXARGB_TODIB(plt_entry); |
638 } | 631 } |
639 } | 632 } |
640 return ret; | 633 return ret; |
641 } | 634 } |
642 FX_BOOL _ConvertBuffer_1bppMask2Rgb(FXDIB_Format dst_format, | 635 FX_BOOL ConvertBuffer_1bppMask2Rgb(FXDIB_Format dst_format, |
643 uint8_t* dest_buf, | 636 uint8_t* dest_buf, |
644 int dest_pitch, | 637 int dest_pitch, |
645 int width, | 638 int width, |
646 int height, | 639 int height, |
647 const CFX_DIBSource* pSrcBitmap, | 640 const CFX_DIBSource* pSrcBitmap, |
648 int src_left, | 641 int src_left, |
649 int src_top) { | 642 int src_top) { |
650 int comps = (dst_format & 0xff) / 8; | 643 int comps = (dst_format & 0xff) / 8; |
651 uint8_t set_gray, reset_gray; | 644 uint8_t set_gray, reset_gray; |
652 set_gray = 0xff; | 645 set_gray = 0xff; |
653 reset_gray = 0x00; | 646 reset_gray = 0x00; |
654 for (int row = 0; row < height; row++) { | 647 for (int row = 0; row < height; row++) { |
655 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 648 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
656 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); | 649 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); |
657 for (int col = src_left; col < src_left + width; col++) { | 650 for (int col = src_left; col < src_left + width; col++) { |
658 if (src_scan[col / 8] & (1 << (7 - col % 8))) { | 651 if (src_scan[col / 8] & (1 << (7 - col % 8))) { |
659 dest_scan[0] = set_gray; | 652 dest_scan[0] = set_gray; |
660 dest_scan[1] = set_gray; | 653 dest_scan[1] = set_gray; |
661 dest_scan[2] = set_gray; | 654 dest_scan[2] = set_gray; |
662 } else { | 655 } else { |
663 dest_scan[0] = reset_gray; | 656 dest_scan[0] = reset_gray; |
664 dest_scan[1] = reset_gray; | 657 dest_scan[1] = reset_gray; |
665 dest_scan[2] = reset_gray; | 658 dest_scan[2] = reset_gray; |
666 } | 659 } |
667 dest_scan += comps; | 660 dest_scan += comps; |
668 } | 661 } |
669 } | 662 } |
670 return TRUE; | 663 return TRUE; |
671 } | 664 } |
672 FX_BOOL _ConvertBuffer_8bppMask2Rgb(FXDIB_Format dst_format, | 665 FX_BOOL ConvertBuffer_8bppMask2Rgb(FXDIB_Format dst_format, |
673 uint8_t* dest_buf, | 666 uint8_t* dest_buf, |
674 int dest_pitch, | 667 int dest_pitch, |
675 int width, | 668 int width, |
676 int height, | 669 int height, |
677 const CFX_DIBSource* pSrcBitmap, | 670 const CFX_DIBSource* pSrcBitmap, |
678 int src_left, | 671 int src_left, |
679 int src_top) { | 672 int src_top) { |
680 int comps = (dst_format & 0xff) / 8; | 673 int comps = (dst_format & 0xff) / 8; |
681 for (int row = 0; row < height; row++) { | 674 for (int row = 0; row < height; row++) { |
682 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 675 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
683 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; | 676 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; |
684 uint8_t src_pixel; | 677 uint8_t src_pixel; |
685 for (int col = 0; col < width; col++) { | 678 for (int col = 0; col < width; col++) { |
686 src_pixel = *src_scan++; | 679 src_pixel = *src_scan++; |
687 *dest_scan++ = src_pixel; | 680 *dest_scan++ = src_pixel; |
688 *dest_scan++ = src_pixel; | 681 *dest_scan++ = src_pixel; |
689 *dest_scan = src_pixel; | 682 *dest_scan = src_pixel; |
690 dest_scan += comps - 2; | 683 dest_scan += comps - 2; |
691 } | 684 } |
692 } | 685 } |
693 return TRUE; | 686 return TRUE; |
694 } | 687 } |
695 FX_BOOL _ConvertBuffer_1bppPlt2Rgb(FXDIB_Format dst_format, | 688 FX_BOOL ConvertBuffer_1bppPlt2Rgb(FXDIB_Format dst_format, |
696 uint8_t* dest_buf, | 689 uint8_t* dest_buf, |
697 int dest_pitch, | 690 int dest_pitch, |
698 int width, | 691 int width, |
699 int height, | 692 int height, |
700 const CFX_DIBSource* pSrcBitmap, | 693 const CFX_DIBSource* pSrcBitmap, |
701 int src_left, | 694 int src_left, |
702 int src_top, | 695 int src_top, |
703 void* pIccTransform) { | 696 void* pIccTransform) { |
704 int comps = (dst_format & 0xff) / 8; | 697 int comps = (dst_format & 0xff) / 8; |
705 FX_DWORD* src_plt = pSrcBitmap->GetPalette(); | 698 FX_DWORD* src_plt = pSrcBitmap->GetPalette(); |
706 FX_DWORD plt[2]; | 699 FX_DWORD plt[2]; |
707 uint8_t* bgr_ptr = (uint8_t*)plt; | 700 uint8_t* bgr_ptr = (uint8_t*)plt; |
708 if (pSrcBitmap->IsCmykImage()) { | 701 if (pSrcBitmap->IsCmykImage()) { |
709 plt[0] = FXCMYK_TODIB(src_plt[0]); | 702 plt[0] = FXCMYK_TODIB(src_plt[0]); |
710 plt[1] = FXCMYK_TODIB(src_plt[1]); | 703 plt[1] = FXCMYK_TODIB(src_plt[1]); |
711 } else { | 704 } else { |
712 bgr_ptr[0] = FXARGB_B(src_plt[0]); | 705 bgr_ptr[0] = FXARGB_B(src_plt[0]); |
713 bgr_ptr[1] = FXARGB_G(src_plt[0]); | 706 bgr_ptr[1] = FXARGB_G(src_plt[0]); |
(...skipping 30 matching lines...) Expand all Loading... |
744 } else { | 737 } else { |
745 *dest_scan++ = bgr_ptr[0]; | 738 *dest_scan++ = bgr_ptr[0]; |
746 *dest_scan++ = bgr_ptr[1]; | 739 *dest_scan++ = bgr_ptr[1]; |
747 *dest_scan = bgr_ptr[2]; | 740 *dest_scan = bgr_ptr[2]; |
748 } | 741 } |
749 dest_scan += comps - 2; | 742 dest_scan += comps - 2; |
750 } | 743 } |
751 } | 744 } |
752 return TRUE; | 745 return TRUE; |
753 } | 746 } |
754 FX_BOOL _ConvertBuffer_8bppPlt2Rgb(FXDIB_Format dst_format, | 747 FX_BOOL ConvertBuffer_8bppPlt2Rgb(FXDIB_Format dst_format, |
755 uint8_t* dest_buf, | 748 uint8_t* dest_buf, |
756 int dest_pitch, | 749 int dest_pitch, |
757 int width, | 750 int width, |
758 int height, | 751 int height, |
759 const CFX_DIBSource* pSrcBitmap, | 752 const CFX_DIBSource* pSrcBitmap, |
760 int src_left, | 753 int src_left, |
761 int src_top, | 754 int src_top, |
762 void* pIccTransform) { | 755 void* pIccTransform) { |
763 int comps = (dst_format & 0xff) / 8; | 756 int comps = (dst_format & 0xff) / 8; |
764 FX_DWORD* src_plt = pSrcBitmap->GetPalette(); | 757 FX_DWORD* src_plt = pSrcBitmap->GetPalette(); |
765 FX_DWORD plt[256]; | 758 FX_DWORD plt[256]; |
766 uint8_t* bgr_ptr = (uint8_t*)plt; | 759 uint8_t* bgr_ptr = (uint8_t*)plt; |
767 if (!pSrcBitmap->IsCmykImage()) { | 760 if (!pSrcBitmap->IsCmykImage()) { |
768 for (int i = 0; i < 256; i++) { | 761 for (int i = 0; i < 256; i++) { |
769 *bgr_ptr++ = FXARGB_B(src_plt[i]); | 762 *bgr_ptr++ = FXARGB_B(src_plt[i]); |
770 *bgr_ptr++ = FXARGB_G(src_plt[i]); | 763 *bgr_ptr++ = FXARGB_G(src_plt[i]); |
771 *bgr_ptr++ = FXARGB_R(src_plt[i]); | 764 *bgr_ptr++ = FXARGB_R(src_plt[i]); |
772 } | 765 } |
(...skipping 27 matching lines...) Expand all Loading... |
800 for (int col = 0; col < width; col++) { | 793 for (int col = 0; col < width; col++) { |
801 uint8_t* src_pixel = bgr_ptr + 3 * (*src_scan++); | 794 uint8_t* src_pixel = bgr_ptr + 3 * (*src_scan++); |
802 *dest_scan++ = *src_pixel++; | 795 *dest_scan++ = *src_pixel++; |
803 *dest_scan++ = *src_pixel++; | 796 *dest_scan++ = *src_pixel++; |
804 *dest_scan = *src_pixel++; | 797 *dest_scan = *src_pixel++; |
805 dest_scan += comps - 2; | 798 dest_scan += comps - 2; |
806 } | 799 } |
807 } | 800 } |
808 return TRUE; | 801 return TRUE; |
809 } | 802 } |
810 FX_BOOL _ConvertBuffer_24bppRgb2Rgb24(uint8_t* dest_buf, | 803 FX_BOOL ConvertBuffer_24bppRgb2Rgb24(uint8_t* dest_buf, |
811 int dest_pitch, | 804 int dest_pitch, |
812 int width, | 805 int width, |
813 int height, | 806 int height, |
814 const CFX_DIBSource* pSrcBitmap, | 807 const CFX_DIBSource* pSrcBitmap, |
815 int src_left, | 808 int src_left, |
816 int src_top, | 809 int src_top, |
817 void* pIccTransform) { | 810 void* pIccTransform) { |
818 if (pIccTransform) { | 811 if (pIccTransform) { |
819 ICodec_IccModule* pIccModule = | 812 ICodec_IccModule* pIccModule = |
820 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); | 813 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); |
821 for (int row = 0; row < height; row++) { | 814 for (int row = 0; row < height; row++) { |
822 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 815 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
823 const uint8_t* src_scan = | 816 const uint8_t* src_scan = |
824 pSrcBitmap->GetScanline(src_top + row) + src_left * 3; | 817 pSrcBitmap->GetScanline(src_top + row) + src_left * 3; |
825 pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, width); | 818 pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, width); |
826 } | 819 } |
827 } else { | 820 } else { |
828 for (int row = 0; row < height; row++) { | 821 for (int row = 0; row < height; row++) { |
829 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 822 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
830 const uint8_t* src_scan = | 823 const uint8_t* src_scan = |
831 pSrcBitmap->GetScanline(src_top + row) + src_left * 3; | 824 pSrcBitmap->GetScanline(src_top + row) + src_left * 3; |
832 FXSYS_memcpy(dest_scan, src_scan, width * 3); | 825 FXSYS_memcpy(dest_scan, src_scan, width * 3); |
833 } | 826 } |
834 } | 827 } |
835 return TRUE; | 828 return TRUE; |
836 } | 829 } |
837 FX_BOOL _ConvertBuffer_32bppRgb2Rgb24(uint8_t* dest_buf, | 830 FX_BOOL ConvertBuffer_32bppRgb2Rgb24(uint8_t* dest_buf, |
838 int dest_pitch, | 831 int dest_pitch, |
839 int width, | 832 int width, |
840 int height, | 833 int height, |
841 const CFX_DIBSource* pSrcBitmap, | 834 const CFX_DIBSource* pSrcBitmap, |
842 int src_left, | 835 int src_left, |
843 int src_top, | 836 int src_top, |
844 void* pIccTransform) { | 837 void* pIccTransform) { |
845 for (int row = 0; row < height; row++) { | 838 for (int row = 0; row < height; row++) { |
846 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 839 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
847 const uint8_t* src_scan = | 840 const uint8_t* src_scan = |
848 pSrcBitmap->GetScanline(src_top + row) + src_left * 4; | 841 pSrcBitmap->GetScanline(src_top + row) + src_left * 4; |
849 for (int col = 0; col < width; col++) { | 842 for (int col = 0; col < width; col++) { |
850 *dest_scan++ = *src_scan++; | 843 *dest_scan++ = *src_scan++; |
851 *dest_scan++ = *src_scan++; | 844 *dest_scan++ = *src_scan++; |
852 *dest_scan++ = *src_scan++; | 845 *dest_scan++ = *src_scan++; |
853 src_scan++; | 846 src_scan++; |
854 } | 847 } |
855 } | 848 } |
856 if (pIccTransform) { | 849 if (pIccTransform) { |
857 ICodec_IccModule* pIccModule = | 850 ICodec_IccModule* pIccModule = |
858 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); | 851 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); |
859 for (int row = 0; row < height; row++) { | 852 for (int row = 0; row < height; row++) { |
860 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 853 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
861 pIccModule->TranslateScanline(pIccTransform, dest_scan, dest_scan, width); | 854 pIccModule->TranslateScanline(pIccTransform, dest_scan, dest_scan, width); |
862 } | 855 } |
863 } | 856 } |
864 return TRUE; | 857 return TRUE; |
865 } | 858 } |
866 FX_BOOL _ConvertBuffer_Rgb2Rgb32(uint8_t* dest_buf, | 859 FX_BOOL ConvertBuffer_Rgb2Rgb32(uint8_t* dest_buf, |
867 int dest_pitch, | 860 int dest_pitch, |
868 int width, | 861 int width, |
869 int height, | 862 int height, |
870 const CFX_DIBSource* pSrcBitmap, | 863 const CFX_DIBSource* pSrcBitmap, |
871 int src_left, | 864 int src_left, |
872 int src_top, | 865 int src_top, |
873 void* pIccTransform) { | 866 void* pIccTransform) { |
874 int comps = pSrcBitmap->GetBPP() / 8; | 867 int comps = pSrcBitmap->GetBPP() / 8; |
875 if (pIccTransform) { | 868 if (pIccTransform) { |
876 ICodec_IccModule* pIccModule = | 869 ICodec_IccModule* pIccModule = |
877 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); | 870 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); |
878 for (int row = 0; row < height; row++) { | 871 for (int row = 0; row < height; row++) { |
879 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 872 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
880 const uint8_t* src_scan = | 873 const uint8_t* src_scan = |
881 pSrcBitmap->GetScanline(src_top + row) + src_left * comps; | 874 pSrcBitmap->GetScanline(src_top + row) + src_left * comps; |
882 for (int col = 0; col < width; col++) { | 875 for (int col = 0; col < width; col++) { |
883 pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); | 876 pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); |
(...skipping 10 matching lines...) Expand all Loading... |
894 *dest_scan++ = *src_scan++; | 887 *dest_scan++ = *src_scan++; |
895 *dest_scan++ = *src_scan++; | 888 *dest_scan++ = *src_scan++; |
896 *dest_scan++ = *src_scan++; | 889 *dest_scan++ = *src_scan++; |
897 dest_scan++; | 890 dest_scan++; |
898 src_scan += comps - 3; | 891 src_scan += comps - 3; |
899 } | 892 } |
900 } | 893 } |
901 } | 894 } |
902 return TRUE; | 895 return TRUE; |
903 } | 896 } |
904 FX_BOOL _ConvertBuffer_32bppCmyk2Rgb32(uint8_t* dest_buf, | 897 FX_BOOL ConvertBuffer_32bppCmyk2Rgb32(uint8_t* dest_buf, |
905 int dest_pitch, | 898 int dest_pitch, |
906 int width, | 899 int width, |
907 int height, | 900 int height, |
908 const CFX_DIBSource* pSrcBitmap, | 901 const CFX_DIBSource* pSrcBitmap, |
909 int src_left, | 902 int src_left, |
910 int src_top, | 903 int src_top, |
911 void* pIccTransform) { | 904 void* pIccTransform) { |
912 if (pIccTransform) { | 905 if (pIccTransform) { |
913 ICodec_IccModule* pIccModule = | 906 ICodec_IccModule* pIccModule = |
914 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); | 907 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); |
915 for (int row = 0; row < height; row++) { | 908 for (int row = 0; row < height; row++) { |
916 uint8_t* dest_scan = dest_buf + row * dest_pitch; | 909 uint8_t* dest_scan = dest_buf + row * dest_pitch; |
917 const uint8_t* src_scan = | 910 const uint8_t* src_scan = |
918 pSrcBitmap->GetScanline(src_top + row) + src_left * 4; | 911 pSrcBitmap->GetScanline(src_top + row) + src_left * 4; |
919 for (int col = 0; col < width; col++) { | 912 for (int col = 0; col < width; col++) { |
920 pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); | 913 pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); |
921 dest_scan += 4; | 914 dest_scan += 4; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
955 switch (dest_format) { | 948 switch (dest_format) { |
956 case FXDIB_Invalid: | 949 case FXDIB_Invalid: |
957 case FXDIB_1bppCmyk: | 950 case FXDIB_1bppCmyk: |
958 case FXDIB_1bppMask: | 951 case FXDIB_1bppMask: |
959 case FXDIB_1bppRgb: | 952 case FXDIB_1bppRgb: |
960 ASSERT(FALSE); | 953 ASSERT(FALSE); |
961 return FALSE; | 954 return FALSE; |
962 case FXDIB_8bppMask: { | 955 case FXDIB_8bppMask: { |
963 if ((src_format & 0xff) == 1) { | 956 if ((src_format & 0xff) == 1) { |
964 if (pSrcBitmap->GetPalette()) { | 957 if (pSrcBitmap->GetPalette()) { |
965 return _ConvertBuffer_1bppPlt2Gray(dest_buf, dest_pitch, width, | 958 return ConvertBuffer_1bppPlt2Gray(dest_buf, dest_pitch, width, height, |
966 height, pSrcBitmap, src_left, | 959 pSrcBitmap, src_left, src_top, |
967 src_top, pIccTransform); | 960 pIccTransform); |
968 } | 961 } |
969 return _ConvertBuffer_1bppMask2Gray(dest_buf, dest_pitch, width, height, | 962 return ConvertBuffer_1bppMask2Gray(dest_buf, dest_pitch, width, height, |
970 pSrcBitmap, src_left, src_top); | 963 pSrcBitmap, src_left, src_top); |
971 } | 964 } |
972 if ((src_format & 0xff) == 8) { | 965 if ((src_format & 0xff) == 8) { |
973 if (pSrcBitmap->GetPalette()) { | 966 if (pSrcBitmap->GetPalette()) { |
974 return _ConvertBuffer_8bppPlt2Gray(dest_buf, dest_pitch, width, | 967 return ConvertBuffer_8bppPlt2Gray(dest_buf, dest_pitch, width, height, |
975 height, pSrcBitmap, src_left, | 968 pSrcBitmap, src_left, src_top, |
976 src_top, pIccTransform); | 969 pIccTransform); |
977 } | 970 } |
978 return _ConvertBuffer_8bppMask2Gray(dest_buf, dest_pitch, width, height, | 971 return ConvertBuffer_8bppMask2Gray(dest_buf, dest_pitch, width, height, |
979 pSrcBitmap, src_left, src_top); | 972 pSrcBitmap, src_left, src_top); |
980 } | 973 } |
981 if ((src_format & 0xff) >= 24) { | 974 if ((src_format & 0xff) >= 24) { |
982 return _ConvertBuffer_RgbOrCmyk2Gray(dest_buf, dest_pitch, width, | 975 return ConvertBuffer_RgbOrCmyk2Gray(dest_buf, dest_pitch, width, height, |
983 height, pSrcBitmap, src_left, | 976 pSrcBitmap, src_left, src_top, |
984 src_top, pIccTransform); | 977 pIccTransform); |
985 } | 978 } |
986 return FALSE; | 979 return FALSE; |
987 } | 980 } |
988 case FXDIB_8bppRgb: | 981 case FXDIB_8bppRgb: |
989 case FXDIB_8bppRgba: { | 982 case FXDIB_8bppRgba: { |
990 if ((src_format & 0xff) == 8 && !pSrcBitmap->GetPalette()) { | 983 if ((src_format & 0xff) == 8 && !pSrcBitmap->GetPalette()) { |
991 return ConvertBuffer(FXDIB_8bppMask, dest_buf, dest_pitch, width, | 984 return ConvertBuffer(FXDIB_8bppMask, dest_buf, dest_pitch, width, |
992 height, pSrcBitmap, src_left, src_top, d_pal, | 985 height, pSrcBitmap, src_left, src_top, d_pal, |
993 pIccTransform); | 986 pIccTransform); |
994 } | 987 } |
995 d_pal = FX_Alloc(FX_DWORD, 256); | 988 d_pal = FX_Alloc(FX_DWORD, 256); |
996 if (((src_format & 0xff) == 1 || (src_format & 0xff) == 8) && | 989 if (((src_format & 0xff) == 1 || (src_format & 0xff) == 8) && |
997 pSrcBitmap->GetPalette()) { | 990 pSrcBitmap->GetPalette()) { |
998 return _ConvertBuffer_Plt2PltRgb8(dest_buf, dest_pitch, width, height, | 991 return ConvertBuffer_Plt2PltRgb8(dest_buf, dest_pitch, width, height, |
999 pSrcBitmap, src_left, src_top, d_pal, | 992 pSrcBitmap, src_left, src_top, d_pal, |
1000 pIccTransform); | 993 pIccTransform); |
1001 } | 994 } |
1002 if ((src_format & 0xff) >= 24) { | 995 if ((src_format & 0xff) >= 24) { |
1003 return _ConvertBuffer_Rgb2PltRgb8(dest_buf, dest_pitch, width, height, | 996 return ConvertBuffer_Rgb2PltRgb8(dest_buf, dest_pitch, width, height, |
1004 pSrcBitmap, src_left, src_top, d_pal, | 997 pSrcBitmap, src_left, src_top, d_pal, |
1005 pIccTransform); | 998 pIccTransform); |
1006 } | 999 } |
1007 return FALSE; | 1000 return FALSE; |
1008 } | 1001 } |
1009 case FXDIB_Rgb: | 1002 case FXDIB_Rgb: |
1010 case FXDIB_Rgba: { | 1003 case FXDIB_Rgba: { |
1011 if ((src_format & 0xff) == 1) { | 1004 if ((src_format & 0xff) == 1) { |
1012 if (pSrcBitmap->GetPalette()) { | 1005 if (pSrcBitmap->GetPalette()) { |
1013 return _ConvertBuffer_1bppPlt2Rgb(dest_format, dest_buf, dest_pitch, | 1006 return ConvertBuffer_1bppPlt2Rgb(dest_format, dest_buf, dest_pitch, |
1014 width, height, pSrcBitmap, src_left, | 1007 width, height, pSrcBitmap, src_left, |
1015 src_top, pIccTransform); | 1008 src_top, pIccTransform); |
1016 } | 1009 } |
1017 return _ConvertBuffer_1bppMask2Rgb(dest_format, dest_buf, dest_pitch, | 1010 return ConvertBuffer_1bppMask2Rgb(dest_format, dest_buf, dest_pitch, |
1018 width, height, pSrcBitmap, src_left, | 1011 width, height, pSrcBitmap, src_left, |
1019 src_top); | 1012 src_top); |
1020 } | 1013 } |
1021 if ((src_format & 0xff) == 8) { | 1014 if ((src_format & 0xff) == 8) { |
1022 if (pSrcBitmap->GetPalette()) { | 1015 if (pSrcBitmap->GetPalette()) { |
1023 return _ConvertBuffer_8bppPlt2Rgb(dest_format, dest_buf, dest_pitch, | 1016 return ConvertBuffer_8bppPlt2Rgb(dest_format, dest_buf, dest_pitch, |
1024 width, height, pSrcBitmap, src_left, | 1017 width, height, pSrcBitmap, src_left, |
1025 src_top, pIccTransform); | 1018 src_top, pIccTransform); |
1026 } | 1019 } |
1027 return _ConvertBuffer_8bppMask2Rgb(dest_format, dest_buf, dest_pitch, | 1020 return ConvertBuffer_8bppMask2Rgb(dest_format, dest_buf, dest_pitch, |
1028 width, height, pSrcBitmap, src_left, | 1021 width, height, pSrcBitmap, src_left, |
1029 src_top); | 1022 src_top); |
1030 } | 1023 } |
1031 if ((src_format & 0xff) == 24) { | 1024 if ((src_format & 0xff) == 24) { |
1032 return _ConvertBuffer_24bppRgb2Rgb24(dest_buf, dest_pitch, width, | 1025 return ConvertBuffer_24bppRgb2Rgb24(dest_buf, dest_pitch, width, height, |
1033 height, pSrcBitmap, src_left, | 1026 pSrcBitmap, src_left, src_top, |
1034 src_top, pIccTransform); | 1027 pIccTransform); |
1035 } | 1028 } |
1036 if ((src_format & 0xff) == 32) { | 1029 if ((src_format & 0xff) == 32) { |
1037 return _ConvertBuffer_32bppRgb2Rgb24(dest_buf, dest_pitch, width, | 1030 return ConvertBuffer_32bppRgb2Rgb24(dest_buf, dest_pitch, width, height, |
1038 height, pSrcBitmap, src_left, | 1031 pSrcBitmap, src_left, src_top, |
1039 src_top, pIccTransform); | 1032 pIccTransform); |
1040 } | 1033 } |
1041 return FALSE; | 1034 return FALSE; |
1042 } | 1035 } |
1043 case FXDIB_Argb: | 1036 case FXDIB_Argb: |
1044 case FXDIB_Rgb32: { | 1037 case FXDIB_Rgb32: { |
1045 if ((src_format & 0xff) == 1) { | 1038 if ((src_format & 0xff) == 1) { |
1046 if (pSrcBitmap->GetPalette()) { | 1039 if (pSrcBitmap->GetPalette()) { |
1047 return _ConvertBuffer_1bppPlt2Rgb(dest_format, dest_buf, dest_pitch, | 1040 return ConvertBuffer_1bppPlt2Rgb(dest_format, dest_buf, dest_pitch, |
1048 width, height, pSrcBitmap, src_left, | 1041 width, height, pSrcBitmap, src_left, |
1049 src_top, pIccTransform); | 1042 src_top, pIccTransform); |
1050 } | 1043 } |
1051 return _ConvertBuffer_1bppMask2Rgb(dest_format, dest_buf, dest_pitch, | 1044 return ConvertBuffer_1bppMask2Rgb(dest_format, dest_buf, dest_pitch, |
1052 width, height, pSrcBitmap, src_left, | 1045 width, height, pSrcBitmap, src_left, |
1053 src_top); | 1046 src_top); |
1054 } | 1047 } |
1055 if ((src_format & 0xff) == 8) { | 1048 if ((src_format & 0xff) == 8) { |
1056 if (pSrcBitmap->GetPalette()) { | 1049 if (pSrcBitmap->GetPalette()) { |
1057 return _ConvertBuffer_8bppPlt2Rgb(dest_format, dest_buf, dest_pitch, | 1050 return ConvertBuffer_8bppPlt2Rgb(dest_format, dest_buf, dest_pitch, |
1058 width, height, pSrcBitmap, src_left, | 1051 width, height, pSrcBitmap, src_left, |
1059 src_top, pIccTransform); | 1052 src_top, pIccTransform); |
1060 } | 1053 } |
1061 return _ConvertBuffer_8bppMask2Rgb(dest_format, dest_buf, dest_pitch, | 1054 return ConvertBuffer_8bppMask2Rgb(dest_format, dest_buf, dest_pitch, |
1062 width, height, pSrcBitmap, src_left, | 1055 width, height, pSrcBitmap, src_left, |
1063 src_top); | 1056 src_top); |
1064 } | 1057 } |
1065 if ((src_format & 0xff) >= 24) { | 1058 if ((src_format & 0xff) >= 24) { |
1066 if (src_format & 0x0400) { | 1059 if (src_format & 0x0400) { |
1067 return _ConvertBuffer_32bppCmyk2Rgb32(dest_buf, dest_pitch, width, | 1060 return ConvertBuffer_32bppCmyk2Rgb32(dest_buf, dest_pitch, width, |
1068 height, pSrcBitmap, src_left, | 1061 height, pSrcBitmap, src_left, |
1069 src_top, pIccTransform); | 1062 src_top, pIccTransform); |
1070 } | 1063 } |
1071 return _ConvertBuffer_Rgb2Rgb32(dest_buf, dest_pitch, width, height, | 1064 return ConvertBuffer_Rgb2Rgb32(dest_buf, dest_pitch, width, height, |
1072 pSrcBitmap, src_left, src_top, | 1065 pSrcBitmap, src_left, src_top, |
1073 pIccTransform); | 1066 pIccTransform); |
1074 } | 1067 } |
1075 return FALSE; | 1068 return FALSE; |
1076 } | 1069 } |
1077 default: | 1070 default: |
1078 return FALSE; | 1071 return FALSE; |
1079 } | 1072 } |
1080 return FALSE; | 1073 return FALSE; |
1081 } | 1074 } |
1082 CFX_DIBitmap* CFX_DIBSource::CloneConvert(FXDIB_Format dest_format, | 1075 CFX_DIBitmap* CFX_DIBSource::CloneConvert(FXDIB_Format dest_format, |
1083 const FX_RECT* pClip, | 1076 const FX_RECT* pClip, |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1224 if (!m_bExtBuf) { | 1217 if (!m_bExtBuf) { |
1225 FX_Free(m_pBuffer); | 1218 FX_Free(m_pBuffer); |
1226 } | 1219 } |
1227 m_bExtBuf = FALSE; | 1220 m_bExtBuf = FALSE; |
1228 m_pBuffer = dest_buf; | 1221 m_pBuffer = dest_buf; |
1229 m_bpp = (uint8_t)dest_format; | 1222 m_bpp = (uint8_t)dest_format; |
1230 m_AlphaFlag = (uint8_t)(dest_format >> 8); | 1223 m_AlphaFlag = (uint8_t)(dest_format >> 8); |
1231 m_Pitch = dest_pitch; | 1224 m_Pitch = dest_pitch; |
1232 return TRUE; | 1225 return TRUE; |
1233 } | 1226 } |
OLD | NEW |