| OLD | NEW |
| 1 #ifndef __DEFINED__SkPdfGraphicsStateDictionary | 1 #ifndef __DEFINED__SkPdfGraphicsStateDictionary |
| 2 #define __DEFINED__SkPdfGraphicsStateDictionary | 2 #define __DEFINED__SkPdfGraphicsStateDictionary |
| 3 | 3 |
| 4 #include "SkPdfUtils.h" | 4 #include "SkPdfUtils.h" |
| 5 #include "SkPdfEnums_autogen.h" | 5 #include "SkPdfEnums_autogen.h" |
| 6 #include "SkPdfArray_autogen.h" | 6 #include "SkPdfArray_autogen.h" |
| 7 #include "SkPdfDictionary_autogen.h" | 7 #include "SkPdfDictionary_autogen.h" |
| 8 | 8 |
| 9 // Entries in a graphics state parameter dictionary | 9 // Entries in a graphics state parameter dictionary |
| 10 class SkPdfGraphicsStateDictionary : public SkPdfDictionary { | 10 class SkPdfGraphicsStateDictionary : public SkPdfDictionary { |
| (...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 | 525 |
| 526 SkPdfGraphicsStateDictionary& operator=(const SkPdfGraphicsStateDictionary& fr
om) {this->fPodofoDoc = from.fPodofoDoc; this->fPodofoObj = from.fPodofoObj; ret
urn *this;} | 526 SkPdfGraphicsStateDictionary& operator=(const SkPdfGraphicsStateDictionary& fr
om) {this->fPodofoDoc = from.fPodofoDoc; this->fPodofoObj = from.fPodofoObj; ret
urn *this;} |
| 527 | 527 |
| 528 /** (Optional) The type of PDF object that this dictionary describes; must be | 528 /** (Optional) The type of PDF object that this dictionary describes; must be |
| 529 * ExtGState for a graphics state parameter dictionary. | 529 * ExtGState for a graphics state parameter dictionary. |
| 530 **/ | 530 **/ |
| 531 bool has_Type() const { | 531 bool has_Type() const { |
| 532 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "Type"
, "", NULL)); | 532 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "Type"
, "", NULL)); |
| 533 } | 533 } |
| 534 | 534 |
| 535 std::string Type() const { | 535 std::string Type() const; |
| 536 std::string ret; | |
| 537 if (NameFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "Type", "",
&ret)) return ret; | |
| 538 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 539 return ""; | |
| 540 } | |
| 541 | |
| 542 /** (Optional; PDF 1.3) The line width (see "Line Width" on page 152). | 536 /** (Optional; PDF 1.3) The line width (see "Line Width" on page 152). |
| 543 **/ | 537 **/ |
| 544 bool has_LW() const { | 538 bool has_LW() const { |
| 545 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "LW",
"", NULL)); | 539 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "LW",
"", NULL)); |
| 546 } | 540 } |
| 547 | 541 |
| 548 double LW() const { | 542 double LW() const; |
| 549 double ret; | |
| 550 if (DoubleFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "LW", "",
&ret)) return ret; | |
| 551 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 552 return 0; | |
| 553 } | |
| 554 | |
| 555 /** (Optional; PDF 1.3) The line cap style (see "Line Cap Style" on page 153). | 543 /** (Optional; PDF 1.3) The line cap style (see "Line Cap Style" on page 153). |
| 556 **/ | 544 **/ |
| 557 bool has_LC() const { | 545 bool has_LC() const { |
| 558 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "LC",
"", NULL)); | 546 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "LC",
"", NULL)); |
| 559 } | 547 } |
| 560 | 548 |
| 561 long LC() const { | 549 long LC() const; |
| 562 long ret; | |
| 563 if (LongFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "LC", "", &r
et)) return ret; | |
| 564 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 565 return 0; | |
| 566 } | |
| 567 | |
| 568 /** (Optional; PDF 1.3) The line join style (see "Line Join Style" on page 153). | 550 /** (Optional; PDF 1.3) The line join style (see "Line Join Style" on page 153). |
| 569 **/ | 551 **/ |
| 570 bool has_LJ() const { | 552 bool has_LJ() const { |
| 571 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "LJ",
"", NULL)); | 553 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "LJ",
"", NULL)); |
| 572 } | 554 } |
| 573 | 555 |
| 574 long LJ() const { | 556 long LJ() const; |
| 575 long ret; | |
| 576 if (LongFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "LJ", "", &r
et)) return ret; | |
| 577 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 578 return 0; | |
| 579 } | |
| 580 | |
| 581 /** (Optional; PDF 1.3) The miter limit (see "Miter Limit" on page 153). | 557 /** (Optional; PDF 1.3) The miter limit (see "Miter Limit" on page 153). |
| 582 **/ | 558 **/ |
| 583 bool has_ML() const { | 559 bool has_ML() const { |
| 584 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "ML",
"", NULL)); | 560 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "ML",
"", NULL)); |
| 585 } | 561 } |
| 586 | 562 |
| 587 double ML() const { | 563 double ML() const; |
| 588 double ret; | |
| 589 if (DoubleFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "ML", "",
&ret)) return ret; | |
| 590 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 591 return 0; | |
| 592 } | |
| 593 | |
| 594 /** (Optional; PDF 1.3) The line dash pattern, expressed as an array of the form | 564 /** (Optional; PDF 1.3) The line dash pattern, expressed as an array of the form |
| 595 * [dashArray dashPhase], where dashArray is itself an array and dashPhase is a
n | 565 * [dashArray dashPhase], where dashArray is itself an array and dashPhase is a
n |
| 596 * integer (see "Line Dash Pattern" on page 155). | 566 * integer (see "Line Dash Pattern" on page 155). |
| 597 **/ | 567 **/ |
| 598 bool has_D() const { | 568 bool has_D() const { |
| 599 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "D", "
", NULL)); | 569 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "D", "
", NULL)); |
| 600 } | 570 } |
| 601 | 571 |
| 602 SkPdfArray* D() const { | 572 SkPdfArray* D() const; |
| 603 SkPdfArray* ret; | |
| 604 if (ArrayFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "D", "", &r
et)) return ret; | |
| 605 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 606 return NULL; | |
| 607 } | |
| 608 | |
| 609 /** (Optional; PDF 1.3) The name of the rendering intent (see "Rendering | 573 /** (Optional; PDF 1.3) The name of the rendering intent (see "Rendering |
| 610 * Intents" on page 197). | 574 * Intents" on page 197). |
| 611 **/ | 575 **/ |
| 612 bool has_RI() const { | 576 bool has_RI() const { |
| 613 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "RI",
"", NULL)); | 577 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "RI",
"", NULL)); |
| 614 } | 578 } |
| 615 | 579 |
| 616 std::string RI() const { | 580 std::string RI() const; |
| 617 std::string ret; | |
| 618 if (NameFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "RI", "", &r
et)) return ret; | |
| 619 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 620 return ""; | |
| 621 } | |
| 622 | |
| 623 /** (Optional) A flag specifying whether to apply overprint (see Section 4.5.6, | 581 /** (Optional) A flag specifying whether to apply overprint (see Section 4.5.6, |
| 624 * "Overprint Control"). In PDF 1.2 and earlier, there is a single overprint | 582 * "Overprint Control"). In PDF 1.2 and earlier, there is a single overprint |
| 625 * parameter that applies to all painting operations. Beginning with PDF 1.3, | 583 * parameter that applies to all painting operations. Beginning with PDF 1.3, |
| 626 * there are two separate overprint parameters: one for stroking and one for al
l | 584 * there are two separate overprint parameters: one for stroking and one for al
l |
| 627 * other painting operations. Specifying an OP entry sets both parameters un- | 585 * other painting operations. Specifying an OP entry sets both parameters un- |
| 628 * less there is also an op entry in the same graphics state parameter dictiona
ry, | 586 * less there is also an op entry in the same graphics state parameter dictiona
ry, |
| 629 * in which case the OP entry sets only the overprint parameter for stroking. | 587 * in which case the OP entry sets only the overprint parameter for stroking. |
| 630 **/ | 588 **/ |
| 631 bool has_OP() const { | 589 bool has_OP() const { |
| 632 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "OP",
"", NULL)); | 590 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "OP",
"", NULL)); |
| 633 } | 591 } |
| 634 | 592 |
| 635 bool OP() const { | 593 bool OP() const; |
| 636 bool ret; | |
| 637 if (BoolFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "OP", "", &r
et)) return ret; | |
| 638 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 639 return false; | |
| 640 } | |
| 641 | |
| 642 /** (Optional; PDF 1.3) A flag specifying whether to apply overprint (see Sectio
n | 594 /** (Optional; PDF 1.3) A flag specifying whether to apply overprint (see Sectio
n |
| 643 * 4.5.6, "Overprint Control") for painting operations other than stroking. If | 595 * 4.5.6, "Overprint Control") for painting operations other than stroking. If |
| 644 * this entry is absent, the OP entry, if any, sets this parameter. | 596 * this entry is absent, the OP entry, if any, sets this parameter. |
| 645 **/ | 597 **/ |
| 646 bool has_op() const { | 598 bool has_op() const { |
| 647 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "op",
"", NULL)); | 599 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "op",
"", NULL)); |
| 648 } | 600 } |
| 649 | 601 |
| 650 bool op() const { | 602 bool op() const; |
| 651 bool ret; | |
| 652 if (BoolFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "op", "", &r
et)) return ret; | |
| 653 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 654 return false; | |
| 655 } | |
| 656 | |
| 657 /** (Optional; PDF 1.3) The overprint mode (see Section 4.5.6, "Overprint Con- | 603 /** (Optional; PDF 1.3) The overprint mode (see Section 4.5.6, "Overprint Con- |
| 658 * trol"). | 604 * trol"). |
| 659 **/ | 605 **/ |
| 660 bool has_OPM() const { | 606 bool has_OPM() const { |
| 661 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "OPM",
"", NULL)); | 607 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "OPM",
"", NULL)); |
| 662 } | 608 } |
| 663 | 609 |
| 664 long OPM() const { | 610 long OPM() const; |
| 665 long ret; | |
| 666 if (LongFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "OPM", "", &
ret)) return ret; | |
| 667 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 668 return 0; | |
| 669 } | |
| 670 | |
| 671 /** (Optional; PDF 1.3) An array of the form [font size], where font is an indir
ect | 611 /** (Optional; PDF 1.3) An array of the form [font size], where font is an indir
ect |
| 672 * reference to a font dictionary and size is a number expressed in text space | 612 * reference to a font dictionary and size is a number expressed in text space |
| 673 * units. These two objects correspond to the operands of the Tf operator (see | 613 * units. These two objects correspond to the operands of the Tf operator (see |
| 674 * Section 5.2, "Text State Parameters and Operators"); however, the first oper
- | 614 * Section 5.2, "Text State Parameters and Operators"); however, the first oper
- |
| 675 * and is an indirect object reference instead of a resource name. | 615 * and is an indirect object reference instead of a resource name. |
| 676 **/ | 616 **/ |
| 677 bool has_Font() const { | 617 bool has_Font() const { |
| 678 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "Font"
, "", NULL)); | 618 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "Font"
, "", NULL)); |
| 679 } | 619 } |
| 680 | 620 |
| 681 SkPdfArray* Font() const { | 621 SkPdfArray* Font() const; |
| 682 SkPdfArray* ret; | |
| 683 if (ArrayFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "Font", "",
&ret)) return ret; | |
| 684 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 685 return NULL; | |
| 686 } | |
| 687 | |
| 688 /** (Optional) The black-generation function, which maps the interval [0.0 1.0] | 622 /** (Optional) The black-generation function, which maps the interval [0.0 1.0] |
| 689 * to the interval [0.0 1.0] (see Section 6.2.3, "Conversion from DeviceRGB to | 623 * to the interval [0.0 1.0] (see Section 6.2.3, "Conversion from DeviceRGB to |
| 690 * DeviceCMYK"). | 624 * DeviceCMYK"). |
| 691 **/ | 625 **/ |
| 692 bool has_BG() const { | 626 bool has_BG() const { |
| 693 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BG",
"", NULL)); | 627 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BG",
"", NULL)); |
| 694 } | 628 } |
| 695 | 629 |
| 696 SkPdfFunction BG() const { | 630 SkPdfFunction BG() const; |
| 697 SkPdfFunction ret; | |
| 698 if (FunctionFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BG", ""
, &ret)) return ret; | |
| 699 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 700 return SkPdfFunction(); | |
| 701 } | |
| 702 | |
| 703 /** (Optional; PDF 1.3) Same as BG except that the value may also be the name | 631 /** (Optional; PDF 1.3) Same as BG except that the value may also be the name |
| 704 * Default, denoting the black-generation function that was in effect at the st
art | 632 * Default, denoting the black-generation function that was in effect at the st
art |
| 705 * of the page. If both BG and BG2 are present in the same graphics state param
- | 633 * of the page. If both BG and BG2 are present in the same graphics state param
- |
| 706 * eter dictionary, BG2 takes precedence. | 634 * eter dictionary, BG2 takes precedence. |
| 707 **/ | 635 **/ |
| 708 bool has_BG2() const { | 636 bool has_BG2() const { |
| 709 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BG2",
"", NULL)); | 637 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BG2",
"", NULL)); |
| 710 } | 638 } |
| 711 | 639 |
| 712 bool isBG2AFunction() const { | 640 bool isBG2AFunction() const { |
| 713 SkPdfObject* ret = NULL; | 641 SkPdfObject* ret = NULL; |
| 714 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BG2", ""
, &ret)) return false; | 642 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BG2", ""
, &ret)) return false; |
| 715 return ret->podofo()->GetDataType() == ePdfDataType_Reference; | 643 return ret->podofo()->GetDataType() == ePdfDataType_Reference; |
| 716 } | 644 } |
| 717 | 645 |
| 718 SkPdfFunction getBG2AsFunction() const { | 646 SkPdfFunction getBG2AsFunction() const; |
| 719 SkPdfFunction ret = SkPdfFunction(); | |
| 720 if (FunctionFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BG2", "
", &ret)) return ret; | |
| 721 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 722 return SkPdfFunction(); | |
| 723 } | |
| 724 | |
| 725 bool isBG2AName() const { | 647 bool isBG2AName() const { |
| 726 SkPdfObject* ret = NULL; | 648 SkPdfObject* ret = NULL; |
| 727 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BG2", ""
, &ret)) return false; | 649 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BG2", ""
, &ret)) return false; |
| 728 return ret->podofo()->GetDataType() == ePdfDataType_Name; | 650 return ret->podofo()->GetDataType() == ePdfDataType_Name; |
| 729 } | 651 } |
| 730 | 652 |
| 731 std::string getBG2AsName() const { | 653 std::string getBG2AsName() const; |
| 732 std::string ret = ""; | |
| 733 if (NameFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BG2", "", &
ret)) return ret; | |
| 734 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 735 return ""; | |
| 736 } | |
| 737 | |
| 738 /** (Optional) The undercolor-removal function, which maps the interval | 654 /** (Optional) The undercolor-removal function, which maps the interval |
| 739 * [0.0 1.0] to the interval [-1.0 1.0] (see Section 6.2.3, "Conversion from | 655 * [0.0 1.0] to the interval [-1.0 1.0] (see Section 6.2.3, "Conversion from |
| 740 * DeviceRGB to DeviceCMYK"). | 656 * DeviceRGB to DeviceCMYK"). |
| 741 **/ | 657 **/ |
| 742 bool has_UCR() const { | 658 bool has_UCR() const { |
| 743 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "UCR",
"", NULL)); | 659 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "UCR",
"", NULL)); |
| 744 } | 660 } |
| 745 | 661 |
| 746 SkPdfFunction UCR() const { | 662 SkPdfFunction UCR() const; |
| 747 SkPdfFunction ret; | |
| 748 if (FunctionFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "UCR", "
", &ret)) return ret; | |
| 749 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 750 return SkPdfFunction(); | |
| 751 } | |
| 752 | |
| 753 /** (Optional; PDF 1.3) Same as UCR except that the value may also be the name | 663 /** (Optional; PDF 1.3) Same as UCR except that the value may also be the name |
| 754 * Default, denoting the undercolor-removal function that was in effect at the | 664 * Default, denoting the undercolor-removal function that was in effect at the |
| 755 * start of the page. If both UCR and UCR2 are present in the same graphics sta
te | 665 * start of the page. If both UCR and UCR2 are present in the same graphics sta
te |
| 756 * parameter dictionary, UCR2 takes precedence. | 666 * parameter dictionary, UCR2 takes precedence. |
| 757 **/ | 667 **/ |
| 758 bool has_UCR2() const { | 668 bool has_UCR2() const { |
| 759 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "UCR2"
, "", NULL)); | 669 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "UCR2"
, "", NULL)); |
| 760 } | 670 } |
| 761 | 671 |
| 762 bool isUCR2AFunction() const { | 672 bool isUCR2AFunction() const { |
| 763 SkPdfObject* ret = NULL; | 673 SkPdfObject* ret = NULL; |
| 764 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "UCR2", "
", &ret)) return false; | 674 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "UCR2", "
", &ret)) return false; |
| 765 return ret->podofo()->GetDataType() == ePdfDataType_Reference; | 675 return ret->podofo()->GetDataType() == ePdfDataType_Reference; |
| 766 } | 676 } |
| 767 | 677 |
| 768 SkPdfFunction getUCR2AsFunction() const { | 678 SkPdfFunction getUCR2AsFunction() const; |
| 769 SkPdfFunction ret = SkPdfFunction(); | |
| 770 if (FunctionFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "UCR2",
"", &ret)) return ret; | |
| 771 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 772 return SkPdfFunction(); | |
| 773 } | |
| 774 | |
| 775 bool isUCR2AName() const { | 679 bool isUCR2AName() const { |
| 776 SkPdfObject* ret = NULL; | 680 SkPdfObject* ret = NULL; |
| 777 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "UCR2", "
", &ret)) return false; | 681 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "UCR2", "
", &ret)) return false; |
| 778 return ret->podofo()->GetDataType() == ePdfDataType_Name; | 682 return ret->podofo()->GetDataType() == ePdfDataType_Name; |
| 779 } | 683 } |
| 780 | 684 |
| 781 std::string getUCR2AsName() const { | 685 std::string getUCR2AsName() const; |
| 782 std::string ret = ""; | |
| 783 if (NameFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "UCR2", "",
&ret)) return ret; | |
| 784 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 785 return ""; | |
| 786 } | |
| 787 | |
| 788 /** (Optional) The transfer function, which maps the interval [0.0 1.0] to the | 686 /** (Optional) The transfer function, which maps the interval [0.0 1.0] to the |
| 789 * interval [0.0 1.0] (see Section 6.3, "Transfer Functions"). The value is eit
her | 687 * interval [0.0 1.0] (see Section 6.3, "Transfer Functions"). The value is eit
her |
| 790 * a single function (which applies to all process colorants) or an array of fo
ur | 688 * a single function (which applies to all process colorants) or an array of fo
ur |
| 791 * functions (which apply to the process colorants individually). The name | 689 * functions (which apply to the process colorants individually). The name |
| 792 * Identity may be used to represent the identity function. | 690 * Identity may be used to represent the identity function. |
| 793 **/ | 691 **/ |
| 794 bool has_TR() const { | 692 bool has_TR() const { |
| 795 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR",
"", NULL)); | 693 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR",
"", NULL)); |
| 796 } | 694 } |
| 797 | 695 |
| 798 bool isTRAFunction() const { | 696 bool isTRAFunction() const { |
| 799 SkPdfObject* ret = NULL; | 697 SkPdfObject* ret = NULL; |
| 800 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR", "",
&ret)) return false; | 698 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR", "",
&ret)) return false; |
| 801 return ret->podofo()->GetDataType() == ePdfDataType_Reference; | 699 return ret->podofo()->GetDataType() == ePdfDataType_Reference; |
| 802 } | 700 } |
| 803 | 701 |
| 804 SkPdfFunction getTRAsFunction() const { | 702 SkPdfFunction getTRAsFunction() const; |
| 805 SkPdfFunction ret = SkPdfFunction(); | |
| 806 if (FunctionFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR", ""
, &ret)) return ret; | |
| 807 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 808 return SkPdfFunction(); | |
| 809 } | |
| 810 | |
| 811 bool isTRAArray() const { | 703 bool isTRAArray() const { |
| 812 SkPdfObject* ret = NULL; | 704 SkPdfObject* ret = NULL; |
| 813 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR", "",
&ret)) return false; | 705 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR", "",
&ret)) return false; |
| 814 return ret->podofo()->GetDataType() == ePdfDataType_Array; | 706 return ret->podofo()->GetDataType() == ePdfDataType_Array; |
| 815 } | 707 } |
| 816 | 708 |
| 817 SkPdfArray* getTRAsArray() const { | 709 SkPdfArray* getTRAsArray() const; |
| 818 SkPdfArray* ret = NULL; | |
| 819 if (ArrayFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR", "", &
ret)) return ret; | |
| 820 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 821 return NULL; | |
| 822 } | |
| 823 | |
| 824 bool isTRAName() const { | 710 bool isTRAName() const { |
| 825 SkPdfObject* ret = NULL; | 711 SkPdfObject* ret = NULL; |
| 826 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR", "",
&ret)) return false; | 712 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR", "",
&ret)) return false; |
| 827 return ret->podofo()->GetDataType() == ePdfDataType_Name; | 713 return ret->podofo()->GetDataType() == ePdfDataType_Name; |
| 828 } | 714 } |
| 829 | 715 |
| 830 std::string getTRAsName() const { | 716 std::string getTRAsName() const; |
| 831 std::string ret = ""; | |
| 832 if (NameFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR", "", &r
et)) return ret; | |
| 833 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 834 return ""; | |
| 835 } | |
| 836 | |
| 837 /** (Optional; PDF 1.3) Same as TR except that the value may also be the name | 717 /** (Optional; PDF 1.3) Same as TR except that the value may also be the name |
| 838 * Default, denoting the transfer function that was in effect at the start of t
he | 718 * Default, denoting the transfer function that was in effect at the start of t
he |
| 839 * page. If both TR and TR2 are present in the same graphics state parameter di
c- | 719 * page. If both TR and TR2 are present in the same graphics state parameter di
c- |
| 840 * tionary, TR2 takes precedence. | 720 * tionary, TR2 takes precedence. |
| 841 **/ | 721 **/ |
| 842 bool has_TR2() const { | 722 bool has_TR2() const { |
| 843 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR2",
"", NULL)); | 723 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR2",
"", NULL)); |
| 844 } | 724 } |
| 845 | 725 |
| 846 bool isTR2AFunction() const { | 726 bool isTR2AFunction() const { |
| 847 SkPdfObject* ret = NULL; | 727 SkPdfObject* ret = NULL; |
| 848 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR2", ""
, &ret)) return false; | 728 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR2", ""
, &ret)) return false; |
| 849 return ret->podofo()->GetDataType() == ePdfDataType_Reference; | 729 return ret->podofo()->GetDataType() == ePdfDataType_Reference; |
| 850 } | 730 } |
| 851 | 731 |
| 852 SkPdfFunction getTR2AsFunction() const { | 732 SkPdfFunction getTR2AsFunction() const; |
| 853 SkPdfFunction ret = SkPdfFunction(); | |
| 854 if (FunctionFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR2", "
", &ret)) return ret; | |
| 855 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 856 return SkPdfFunction(); | |
| 857 } | |
| 858 | |
| 859 bool isTR2AArray() const { | 733 bool isTR2AArray() const { |
| 860 SkPdfObject* ret = NULL; | 734 SkPdfObject* ret = NULL; |
| 861 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR2", ""
, &ret)) return false; | 735 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR2", ""
, &ret)) return false; |
| 862 return ret->podofo()->GetDataType() == ePdfDataType_Array; | 736 return ret->podofo()->GetDataType() == ePdfDataType_Array; |
| 863 } | 737 } |
| 864 | 738 |
| 865 SkPdfArray* getTR2AsArray() const { | 739 SkPdfArray* getTR2AsArray() const; |
| 866 SkPdfArray* ret = NULL; | |
| 867 if (ArrayFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR2", "",
&ret)) return ret; | |
| 868 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 869 return NULL; | |
| 870 } | |
| 871 | |
| 872 bool isTR2AName() const { | 740 bool isTR2AName() const { |
| 873 SkPdfObject* ret = NULL; | 741 SkPdfObject* ret = NULL; |
| 874 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR2", ""
, &ret)) return false; | 742 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR2", ""
, &ret)) return false; |
| 875 return ret->podofo()->GetDataType() == ePdfDataType_Name; | 743 return ret->podofo()->GetDataType() == ePdfDataType_Name; |
| 876 } | 744 } |
| 877 | 745 |
| 878 std::string getTR2AsName() const { | 746 std::string getTR2AsName() const; |
| 879 std::string ret = ""; | |
| 880 if (NameFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TR2", "", &
ret)) return ret; | |
| 881 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 882 return ""; | |
| 883 } | |
| 884 | |
| 885 /** (Optional) The halftone dictionary or stream (see Section 6.4, "Halftones") | 747 /** (Optional) The halftone dictionary or stream (see Section 6.4, "Halftones") |
| 886 * or the name Default, denoting the halftone that was in effect at the start o
f the | 748 * or the name Default, denoting the halftone that was in effect at the start o
f the |
| 887 * page. | 749 * page. |
| 888 **/ | 750 **/ |
| 889 bool has_HT() const { | 751 bool has_HT() const { |
| 890 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "HT",
"", NULL)); | 752 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "HT",
"", NULL)); |
| 891 } | 753 } |
| 892 | 754 |
| 893 bool isHTADictionary() const { | 755 bool isHTADictionary() const { |
| 894 SkPdfObject* ret = NULL; | 756 SkPdfObject* ret = NULL; |
| 895 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "HT", "",
&ret)) return false; | 757 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "HT", "",
&ret)) return false; |
| 896 return ret->podofo()->GetDataType() == ePdfDataType_Dictionary; | 758 return ret->podofo()->GetDataType() == ePdfDataType_Dictionary; |
| 897 } | 759 } |
| 898 | 760 |
| 899 SkPdfDictionary* getHTAsDictionary() const { | 761 SkPdfDictionary* getHTAsDictionary() const; |
| 900 SkPdfDictionary* ret = NULL; | |
| 901 if (DictionaryFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "HT",
"", &ret)) return ret; | |
| 902 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 903 return NULL; | |
| 904 } | |
| 905 | |
| 906 bool isHTAStream() const { | 762 bool isHTAStream() const { |
| 907 SkPdfObject* ret = NULL; | 763 SkPdfObject* ret = NULL; |
| 908 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "HT", "",
&ret)) return false; | 764 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "HT", "",
&ret)) return false; |
| 909 return ret->podofo()->HasStream(); | 765 return ret->podofo()->HasStream(); |
| 910 } | 766 } |
| 911 | 767 |
| 912 SkPdfStream* getHTAsStream() const { | 768 SkPdfStream* getHTAsStream() const; |
| 913 SkPdfStream* ret = NULL; | |
| 914 if (StreamFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "HT", "",
&ret)) return ret; | |
| 915 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 916 return NULL; | |
| 917 } | |
| 918 | |
| 919 bool isHTAName() const { | 769 bool isHTAName() const { |
| 920 SkPdfObject* ret = NULL; | 770 SkPdfObject* ret = NULL; |
| 921 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "HT", "",
&ret)) return false; | 771 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "HT", "",
&ret)) return false; |
| 922 return ret->podofo()->GetDataType() == ePdfDataType_Name; | 772 return ret->podofo()->GetDataType() == ePdfDataType_Name; |
| 923 } | 773 } |
| 924 | 774 |
| 925 std::string getHTAsName() const { | 775 std::string getHTAsName() const; |
| 926 std::string ret = ""; | |
| 927 if (NameFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "HT", "", &r
et)) return ret; | |
| 928 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 929 return ""; | |
| 930 } | |
| 931 | |
| 932 /** (Optional; PDF 1.3) The flatness tolerance (see Section 6.5.1, "Flatness Tol
er- | 776 /** (Optional; PDF 1.3) The flatness tolerance (see Section 6.5.1, "Flatness Tol
er- |
| 933 * ance"). | 777 * ance"). |
| 934 **/ | 778 **/ |
| 935 bool has_FL() const { | 779 bool has_FL() const { |
| 936 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "FL",
"", NULL)); | 780 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "FL",
"", NULL)); |
| 937 } | 781 } |
| 938 | 782 |
| 939 double FL() const { | 783 double FL() const; |
| 940 double ret; | |
| 941 if (DoubleFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "FL", "",
&ret)) return ret; | |
| 942 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 943 return 0; | |
| 944 } | |
| 945 | |
| 946 /** (Optional; PDF 1.3) The smoothness tolerance (see Section 6.5.2, "Smooth- | 784 /** (Optional; PDF 1.3) The smoothness tolerance (see Section 6.5.2, "Smooth- |
| 947 * ness Tolerance"). | 785 * ness Tolerance"). |
| 948 **/ | 786 **/ |
| 949 bool has_SM() const { | 787 bool has_SM() const { |
| 950 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SM",
"", NULL)); | 788 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SM",
"", NULL)); |
| 951 } | 789 } |
| 952 | 790 |
| 953 double SM() const { | 791 double SM() const; |
| 954 double ret; | |
| 955 if (DoubleFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SM", "",
&ret)) return ret; | |
| 956 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 957 return 0; | |
| 958 } | |
| 959 | |
| 960 /** (Optional) A flag specifying whether to apply automatic stroke adjustment | 792 /** (Optional) A flag specifying whether to apply automatic stroke adjustment |
| 961 * (see Section 6.5.4, "Automatic Stroke Adjustment"). | 793 * (see Section 6.5.4, "Automatic Stroke Adjustment"). |
| 962 **/ | 794 **/ |
| 963 bool has_SA() const { | 795 bool has_SA() const { |
| 964 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SA",
"", NULL)); | 796 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SA",
"", NULL)); |
| 965 } | 797 } |
| 966 | 798 |
| 967 bool SA() const { | 799 bool SA() const; |
| 968 bool ret; | |
| 969 if (BoolFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SA", "", &r
et)) return ret; | |
| 970 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 971 return false; | |
| 972 } | |
| 973 | |
| 974 /** (Optional; PDF 1.4) The current blend mode to be used in the transparent | 800 /** (Optional; PDF 1.4) The current blend mode to be used in the transparent |
| 975 * imaging model (see Sections 7.2.4, "Blend Mode," and 7.5.2, "Specifying | 801 * imaging model (see Sections 7.2.4, "Blend Mode," and 7.5.2, "Specifying |
| 976 * Blending Color Space and Blend Mode"). | 802 * Blending Color Space and Blend Mode"). |
| 977 **/ | 803 **/ |
| 978 bool has_BM() const { | 804 bool has_BM() const { |
| 979 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BM",
"", NULL)); | 805 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BM",
"", NULL)); |
| 980 } | 806 } |
| 981 | 807 |
| 982 bool isBMAName() const { | 808 bool isBMAName() const { |
| 983 SkPdfObject* ret = NULL; | 809 SkPdfObject* ret = NULL; |
| 984 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BM", "",
&ret)) return false; | 810 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BM", "",
&ret)) return false; |
| 985 return ret->podofo()->GetDataType() == ePdfDataType_Name; | 811 return ret->podofo()->GetDataType() == ePdfDataType_Name; |
| 986 } | 812 } |
| 987 | 813 |
| 988 std::string getBMAsName() const { | 814 std::string getBMAsName() const; |
| 989 std::string ret = ""; | |
| 990 if (NameFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BM", "", &r
et)) return ret; | |
| 991 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 992 return ""; | |
| 993 } | |
| 994 | |
| 995 bool isBMAArray() const { | 815 bool isBMAArray() const { |
| 996 SkPdfObject* ret = NULL; | 816 SkPdfObject* ret = NULL; |
| 997 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BM", "",
&ret)) return false; | 817 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BM", "",
&ret)) return false; |
| 998 return ret->podofo()->GetDataType() == ePdfDataType_Array; | 818 return ret->podofo()->GetDataType() == ePdfDataType_Array; |
| 999 } | 819 } |
| 1000 | 820 |
| 1001 SkPdfArray* getBMAsArray() const { | 821 SkPdfArray* getBMAsArray() const; |
| 1002 SkPdfArray* ret = NULL; | |
| 1003 if (ArrayFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "BM", "", &
ret)) return ret; | |
| 1004 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 1005 return NULL; | |
| 1006 } | |
| 1007 | |
| 1008 /** (Optional; PDF 1.4) The current soft mask, specifying the mask shape or | 822 /** (Optional; PDF 1.4) The current soft mask, specifying the mask shape or |
| 1009 * mask opacity values to be used in the transparent imaging model (see | 823 * mask opacity values to be used in the transparent imaging model (see |
| 1010 * "Source Shape and Opacity" on page 421 and "Mask Shape and Opacity" on | 824 * "Source Shape and Opacity" on page 421 and "Mask Shape and Opacity" on |
| 1011 * page 443). | 825 * page 443). |
| 1012 * Note: Although the current soft mask is sometimes referred to as a "soft cli
p," | 826 * Note: Although the current soft mask is sometimes referred to as a "soft cli
p," |
| 1013 * altering it with the gs operator completely replaces the old value with the
new | 827 * altering it with the gs operator completely replaces the old value with the
new |
| 1014 * one, rather than intersecting the two as is done with the current clipping p
ath | 828 * one, rather than intersecting the two as is done with the current clipping p
ath |
| 1015 * parameter (see Section 4.4.3, "Clipping Path Operators"). | 829 * parameter (see Section 4.4.3, "Clipping Path Operators"). |
| 1016 **/ | 830 **/ |
| 1017 bool has_SMask() const { | 831 bool has_SMask() const { |
| 1018 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SMask
", "", NULL)); | 832 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SMask
", "", NULL)); |
| 1019 } | 833 } |
| 1020 | 834 |
| 1021 bool isSMaskADictionary() const { | 835 bool isSMaskADictionary() const { |
| 1022 SkPdfObject* ret = NULL; | 836 SkPdfObject* ret = NULL; |
| 1023 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SMask",
"", &ret)) return false; | 837 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SMask",
"", &ret)) return false; |
| 1024 return ret->podofo()->GetDataType() == ePdfDataType_Dictionary; | 838 return ret->podofo()->GetDataType() == ePdfDataType_Dictionary; |
| 1025 } | 839 } |
| 1026 | 840 |
| 1027 SkPdfDictionary* getSMaskAsDictionary() const { | 841 SkPdfDictionary* getSMaskAsDictionary() const; |
| 1028 SkPdfDictionary* ret = NULL; | |
| 1029 if (DictionaryFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SMask
", "", &ret)) return ret; | |
| 1030 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 1031 return NULL; | |
| 1032 } | |
| 1033 | |
| 1034 bool isSMaskAName() const { | 842 bool isSMaskAName() const { |
| 1035 SkPdfObject* ret = NULL; | 843 SkPdfObject* ret = NULL; |
| 1036 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SMask",
"", &ret)) return false; | 844 if (!ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SMask",
"", &ret)) return false; |
| 1037 return ret->podofo()->GetDataType() == ePdfDataType_Name; | 845 return ret->podofo()->GetDataType() == ePdfDataType_Name; |
| 1038 } | 846 } |
| 1039 | 847 |
| 1040 std::string getSMaskAsName() const { | 848 std::string getSMaskAsName() const; |
| 1041 std::string ret = ""; | |
| 1042 if (NameFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "SMask", "",
&ret)) return ret; | |
| 1043 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 1044 return ""; | |
| 1045 } | |
| 1046 | |
| 1047 /** (Optional; PDF 1.4) The current stroking alpha constant, specifying the con- | 849 /** (Optional; PDF 1.4) The current stroking alpha constant, specifying the con- |
| 1048 * stant shape or constant opacity value to be used for stroking operations in
the | 850 * stant shape or constant opacity value to be used for stroking operations in
the |
| 1049 * transparent imaging model (see "Source Shape and Opacity" on page 421 | 851 * transparent imaging model (see "Source Shape and Opacity" on page 421 |
| 1050 * and "Constant Shape and Opacity" on page 444). | 852 * and "Constant Shape and Opacity" on page 444). |
| 1051 **/ | 853 **/ |
| 1052 bool has_CA() const { | 854 bool has_CA() const { |
| 1053 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "CA",
"", NULL)); | 855 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "CA",
"", NULL)); |
| 1054 } | 856 } |
| 1055 | 857 |
| 1056 double CA() const { | 858 double CA() const; |
| 1057 double ret; | |
| 1058 if (DoubleFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "CA", "",
&ret)) return ret; | |
| 1059 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 1060 return 0; | |
| 1061 } | |
| 1062 | |
| 1063 /** (Optional; PDF 1.4) Same as CA, but for nonstroking operations. | 859 /** (Optional; PDF 1.4) Same as CA, but for nonstroking operations. |
| 1064 **/ | 860 **/ |
| 1065 bool has_ca() const { | 861 bool has_ca() const { |
| 1066 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "ca",
"", NULL)); | 862 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "ca",
"", NULL)); |
| 1067 } | 863 } |
| 1068 | 864 |
| 1069 double ca() const { | 865 double ca() const; |
| 1070 double ret; | |
| 1071 if (DoubleFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "ca", "",
&ret)) return ret; | |
| 1072 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 1073 return 0; | |
| 1074 } | |
| 1075 | |
| 1076 /** (Optional; PDF 1.4) The alpha source flag ("alpha is shape"), specifying | 866 /** (Optional; PDF 1.4) The alpha source flag ("alpha is shape"), specifying |
| 1077 * whether the current soft mask and alpha constant are to be interpreted as | 867 * whether the current soft mask and alpha constant are to be interpreted as |
| 1078 * shape values (true) or opacity values (false). | 868 * shape values (true) or opacity values (false). |
| 1079 **/ | 869 **/ |
| 1080 bool has_AIS() const { | 870 bool has_AIS() const { |
| 1081 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "AIS",
"", NULL)); | 871 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "AIS",
"", NULL)); |
| 1082 } | 872 } |
| 1083 | 873 |
| 1084 bool AIS() const { | 874 bool AIS() const; |
| 1085 bool ret; | |
| 1086 if (BoolFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "AIS", "", &
ret)) return ret; | |
| 1087 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 1088 return false; | |
| 1089 } | |
| 1090 | |
| 1091 /** (Optional; PDF 1.4) The text knockout flag, which determines the behavior | 875 /** (Optional; PDF 1.4) The text knockout flag, which determines the behavior |
| 1092 * of overlapping glyphs within a text object in the transparent imaging model | 876 * of overlapping glyphs within a text object in the transparent imaging model |
| 1093 * (see Section 5.2.7, "Text Knockout"). | 877 * (see Section 5.2.7, "Text Knockout"). |
| 1094 **/ | 878 **/ |
| 1095 bool has_TK() const { | 879 bool has_TK() const { |
| 1096 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TK",
"", NULL)); | 880 return (ObjectFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TK",
"", NULL)); |
| 1097 } | 881 } |
| 1098 | 882 |
| 1099 bool TK() const { | 883 bool TK() const; |
| 1100 bool ret; | |
| 1101 if (BoolFromDictionary(fPodofoDoc, fPodofoObj->GetDictionary(), "TK", "", &r
et)) return ret; | |
| 1102 // TODO(edisonn): warn about missing required field, assert for known good p
dfs | |
| 1103 return false; | |
| 1104 } | |
| 1105 | |
| 1106 }; | 884 }; |
| 1107 | 885 |
| 1108 #endif // __DEFINED__SkPdfGraphicsStateDictionary | 886 #endif // __DEFINED__SkPdfGraphicsStateDictionary |
| OLD | NEW |