API and test for retrieving image filters from image objects [pdfium : master]

77 views
Skip to first unread message

Jane Liu (Gerrit)

unread,
Aug 3, 2017, 10:13:37 PM8/3/17
to Lei Zhang, (OOO Jul 28 - Aug 8) dsinclair, Chromium commit bot, pdfium-...@googlegroups.com

Hi Lei, this should be the last API of this set. PTAL, thanks!

View Change

    To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: pdfium
    Gerrit-Branch: master
    Gerrit-MessageType: comment
    Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
    Gerrit-Change-Number: 10130
    Gerrit-PatchSet: 2
    Gerrit-Owner: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
    Gerrit-CC: (OOO Jul 28 - Aug 8) dsinclair <dsin...@chromium.org>
    Gerrit-CC: Chromium commit bot <commi...@chromium.org>
    Gerrit-Comment-Date: Fri, 04 Aug 2017 02:13:35 +0000
    Gerrit-HasComments: No
    Gerrit-HasLabels: No

    Lei Zhang (Gerrit)

    unread,
    Aug 8, 2017, 8:10:51 PM8/8/17
    to Jane Liu, Lei Zhang, dsinclair, Chromium commit bot, pdfium-...@googlegroups.com

    View Change

    3 comments:

    To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: pdfium
    Gerrit-Branch: master
    Gerrit-MessageType: comment
    Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
    Gerrit-Change-Number: 10130
    Gerrit-PatchSet: 3
    Gerrit-Owner: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
    Gerrit-CC: Chromium commit bot <commi...@chromium.org>
    Gerrit-CC: dsinclair <dsin...@chromium.org>
    Gerrit-Comment-Date: Wed, 09 Aug 2017 00:10:49 +0000
    Gerrit-HasComments: Yes
    Gerrit-HasLabels: No

    Jane Liu (Gerrit)

    unread,
    Aug 9, 2017, 10:05:44 AM8/9/17
    to Lei Zhang, pdfium-...@googlegroups.com, Chromium commit bot, dsinclair

    Jane Liu uploaded patch set #4 to this change.

    View Change

    API and test for retrieving image filters from image objects

    Added FPDFImageObj_GetImageFilterCount() and
    FPDFImageObj_GetImageFilters() for retrieving image filters of image
    objects.
    * Added a corresponding embedder test.

    Bug=pdfium:677

    Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
    ---
    M fpdfsdk/fpdfedit_embeddertest.cpp
    M fpdfsdk/fpdfeditimg.cpp
    M fpdfsdk/fpdfview_c_api_test.c
    M public/fpdf_edit.h
    M testing/resources/embedded_images.pdf
    5 files changed, 111 insertions(+), 0 deletions(-)

    To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: pdfium
    Gerrit-Branch: master
    Gerrit-MessageType: newpatchset
    Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
    Gerrit-Change-Number: 10130
    Gerrit-PatchSet: 4

    Jane Liu (Gerrit)

    unread,
    Aug 9, 2017, 10:11:28 AM8/9/17
    to dsinclair, Lei Zhang, Chromium commit bot, pdfium-...@googlegroups.com

    Thanks!

    View Change

    3 comments:

      • Out of date with patch set 3?

      • If you use a temporary variable somewhere in here, will the result be less

      • How do you know it's going to be an array?

      • Because FPDFImageObj_GetImageFilterCount() already checks that - the count output will only be >0 if it's either a name or an array; and if count is 0, then the check on L213 will fail.

    To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: pdfium
    Gerrit-Branch: master
    Gerrit-MessageType: comment
    Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
    Gerrit-Change-Number: 10130
    Gerrit-PatchSet: 5
    Gerrit-Owner: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
    Gerrit-Reviewer: dsinclair <dsin...@chromium.org>
    Gerrit-CC: Chromium commit bot <commi...@chromium.org>
    Gerrit-Comment-Date: Wed, 09 Aug 2017 14:11:27 +0000
    Gerrit-HasComments: Yes
    Gerrit-HasLabels: No

    dsinclair (Gerrit)

    unread,
    Aug 9, 2017, 10:14:31 AM8/9/17
    to Jane Liu, Lei Zhang, Chromium commit bot, pdfium-...@googlegroups.com

    View Change

    2 comments:

    To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: pdfium
    Gerrit-Branch: master
    Gerrit-MessageType: comment
    Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
    Gerrit-Change-Number: 10130
    Gerrit-PatchSet: 5
    Gerrit-Owner: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
    Gerrit-Reviewer: dsinclair <dsin...@chromium.org>
    Gerrit-CC: Chromium commit bot <commi...@chromium.org>
    Gerrit-Comment-Date: Wed, 09 Aug 2017 14:14:26 +0000
    Gerrit-HasComments: Yes
    Gerrit-HasLabels: No

    Jane Liu (Gerrit)

    unread,
    Aug 9, 2017, 11:05:06 AM8/9/17
    to dsinclair, Lei Zhang, Chromium commit bot, pdfium-...@googlegroups.com

    View Change

    2 comments:

      • Patch Set #4, Line 339: // Get the number of filters (i.e. decoders) of the image in |image_object|.

        Should we add a note here on what order the filters need to be applied in?

      • Done

    To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: pdfium
    Gerrit-Branch: master
    Gerrit-MessageType: comment
    Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
    Gerrit-Change-Number: 10130
    Gerrit-PatchSet: 6
    Gerrit-Owner: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
    Gerrit-Reviewer: dsinclair <dsin...@chromium.org>
    Gerrit-CC: Chromium commit bot <commi...@chromium.org>
    Gerrit-Comment-Date: Wed, 09 Aug 2017 15:05:04 +0000
    Gerrit-HasComments: Yes
    Gerrit-HasLabels: No

    dsinclair (Gerrit)

    unread,
    Aug 9, 2017, 11:28:53 AM8/9/17
    to Jane Liu, Lei Zhang, Chromium commit bot, pdfium-...@googlegroups.com

    View Change

    1 comment:

      • Where is this convention from?

        My brain, heh. I don't know if it is a convention, just seemed like it made sense with the fpdf_edit.h file header to have FPDF_Edit? The capitol T for test makes sense as it's a new camel case word.

    To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: pdfium
    Gerrit-Branch: master
    Gerrit-MessageType: comment
    Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
    Gerrit-Change-Number: 10130
    Gerrit-PatchSet: 6
    Gerrit-Owner: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
    Gerrit-Reviewer: dsinclair <dsin...@chromium.org>
    Gerrit-CC: Chromium commit bot <commi...@chromium.org>
    Gerrit-Comment-Date: Wed, 09 Aug 2017 15:28:51 +0000
    Gerrit-HasComments: Yes
    Gerrit-HasLabels: No

    Jane Liu (Gerrit)

    unread,
    Aug 9, 2017, 11:30:37 AM8/9/17
    to dsinclair, Lei Zhang, Chromium commit bot, pdfium-...@googlegroups.com

    View Change

    1 comment:

      • My brain, heh. I don't know if it is a convention, just seemed like it made

        :). Well all the current embedder tests follow FPDF*Embeddertest, so unless we want to change all of them?

    To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: pdfium
    Gerrit-Branch: master
    Gerrit-MessageType: comment
    Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
    Gerrit-Change-Number: 10130
    Gerrit-PatchSet: 6
    Gerrit-Owner: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
    Gerrit-Reviewer: dsinclair <dsin...@chromium.org>
    Gerrit-CC: Chromium commit bot <commi...@chromium.org>
    Gerrit-Comment-Date: Wed, 09 Aug 2017 15:30:35 +0000
    Gerrit-HasComments: Yes
    Gerrit-HasLabels: No

    dsinclair (Gerrit)

    unread,
    Aug 9, 2017, 11:32:41 AM8/9/17
    to Jane Liu, Lei Zhang, Chromium commit bot, pdfium-...@googlegroups.com

    View Change

    1 comment:

      • :). Well all the current embedder tests follow FPDF*Embeddertest, so unless

        Leave it for now.

    To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: pdfium
    Gerrit-Branch: master
    Gerrit-MessageType: comment
    Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
    Gerrit-Change-Number: 10130
    Gerrit-PatchSet: 6
    Gerrit-Owner: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Jane Liu <janel...@google.com>
    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
    Gerrit-Reviewer: dsinclair <dsin...@chromium.org>
    Gerrit-CC: Chromium commit bot <commi...@chromium.org>
    Gerrit-Comment-Date: Wed, 09 Aug 2017 15:32:39 +0000
    Gerrit-HasComments: Yes
    Gerrit-HasLabels: No

    dsinclair (Gerrit)

    unread,
    Aug 9, 2017, 11:35:48 AM8/9/17
    to Jane Liu, Lei Zhang, Chromium commit bot, pdfium-...@googlegroups.com

    Patch set 6:Code-Review +1

    View Change

      To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

      Gerrit-Project: pdfium
      Gerrit-Branch: master
      Gerrit-MessageType: comment
      Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
      Gerrit-Change-Number: 10130
      Gerrit-PatchSet: 6
      Gerrit-Owner: Jane Liu <janel...@google.com>
      Gerrit-Reviewer: Jane Liu <janel...@google.com>
      Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
      Gerrit-Reviewer: dsinclair <dsin...@chromium.org>
      Gerrit-CC: Chromium commit bot <commi...@chromium.org>
      Gerrit-Comment-Date: Wed, 09 Aug 2017 15:35:46 +0000
      Gerrit-HasComments: No
      Gerrit-HasLabels: Yes

      Lei Zhang (Gerrit)

      unread,
      Aug 9, 2017, 1:48:53 PM8/9/17
      to Jane Liu, Lei Zhang, dsinclair, Chromium commit bot, pdfium-...@googlegroups.com

      Can you briefly describe what changed in embedded_images.pdf for those of us that are too lazy to look?

      View Change

      1 comment:

      To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

      Gerrit-Project: pdfium
      Gerrit-Branch: master
      Gerrit-MessageType: comment
      Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
      Gerrit-Change-Number: 10130
      Gerrit-PatchSet: 6
      Gerrit-Owner: Jane Liu <janel...@google.com>
      Gerrit-Reviewer: Jane Liu <janel...@google.com>
      Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
      Gerrit-Reviewer: dsinclair <dsin...@chromium.org>
      Gerrit-CC: Chromium commit bot <commi...@chromium.org>
      Gerrit-Comment-Date: Wed, 09 Aug 2017 17:48:51 +0000
      Gerrit-HasComments: Yes
      Gerrit-HasLabels: No

      Jane Liu (Gerrit)

      unread,
      Aug 9, 2017, 2:08:41 PM8/9/17
      to Lei Zhang, dsinclair, pdfium-...@googlegroups.com, Chromium commit bot

      Jane Liu uploaded patch set #7 to this change.

      View Change

      API and test for retrieving image filters from image objects

      Added FPDFImageObj_GetImageFilterCount() and
      FPDFImageObj_GetImageFilters() for retrieving image filters of image
      objects.
      * Added a corresponding embedder test.
          * Changed the filter of an image object in embedded_image.pdf from
      DCTDecode to ASCIIHexDecode + DCTDecode, so we have a test case
      for images with more than one filter.


      Bug=pdfium:677

      Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
      ---
      M fpdfsdk/fpdfedit_embeddertest.cpp
      M fpdfsdk/fpdfeditimg.cpp
      M fpdfsdk/fpdfview_c_api_test.c
      M public/fpdf_edit.h
      M testing/resources/embedded_images.pdf
      5 files changed, 111 insertions(+), 0 deletions(-)

      To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

      Gerrit-Project: pdfium
      Gerrit-Branch: master
      Gerrit-MessageType: newpatchset
      Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
      Gerrit-Change-Number: 10130
      Gerrit-PatchSet: 7

      Jane Liu (Gerrit)

      unread,
      Aug 9, 2017, 2:10:20 PM8/9/17
      to Lei Zhang, dsinclair, pdfium-...@googlegroups.com, Chromium commit bot

      Jane Liu uploaded patch set #9 to this change.

      View Change

      API and test for retrieving image filters from image objects

      Added FPDFImageObj_GetImageFilterCount() and
      FPDFImageObj_GetImageFilters() for retrieving image filters of image
      objects.
      * Added a corresponding embedder test.
      * Changed the filter of an image object in embedded_image.pdf from
      DCTDecode to ASCIIHexDecode + DCTDecode, so we have a test case
      for images with more than one filter.

      Bug=pdfium:677

      Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
      ---
      M fpdfsdk/fpdfedit_embeddertest.cpp
      M fpdfsdk/fpdfeditimg.cpp
      M fpdfsdk/fpdfview_c_api_test.c
      M public/fpdf_edit.h
      M testing/resources/embedded_images.pdf
      5 files changed, 118 insertions(+), 0 deletions(-)

      To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

      Gerrit-Project: pdfium
      Gerrit-Branch: master
      Gerrit-MessageType: newpatchset
      Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
      Gerrit-Change-Number: 10130
      Gerrit-PatchSet: 9

      Jane Liu (Gerrit)

      unread,
      Aug 9, 2017, 2:10:51 PM8/9/17
      to Lei Zhang, dsinclair, Chromium commit bot, pdfium-...@googlegroups.com

      Patch Set 6:

      (1 comment)

      Can you briefly describe what changed in embedded_images.pdf for those of us that are too lazy to look?

      Updated the commit message to explain the change.
      Thanks!

      View Change

      1 comment:

        • Patch Set #6, Line 1042: TEST_F(FPDFEditEmbeddertest, GetImageFilters) {

          Add a separate test case for testing an invalid object, and out of bound in

        • Done

      To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

      Gerrit-Project: pdfium
      Gerrit-Branch: master
      Gerrit-MessageType: comment
      Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
      Gerrit-Change-Number: 10130
      Gerrit-PatchSet: 9
      Gerrit-Owner: Jane Liu <janel...@google.com>
      Gerrit-Reviewer: Jane Liu <janel...@google.com>
      Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
      Gerrit-Reviewer: dsinclair <dsin...@chromium.org>
      Gerrit-CC: Chromium commit bot <commi...@chromium.org>
      Gerrit-Comment-Date: Wed, 09 Aug 2017 18:10:50 +0000
      Gerrit-HasComments: Yes
      Gerrit-HasLabels: No

      Lei Zhang (Gerrit)

      unread,
      Aug 9, 2017, 2:11:36 PM8/9/17
      to Jane Liu, Lei Zhang, dsinclair, Chromium commit bot, pdfium-...@googlegroups.com

      Patch set 9:Code-Review +1

      View Change

        To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

        Gerrit-Project: pdfium
        Gerrit-Branch: master
        Gerrit-MessageType: comment
        Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
        Gerrit-Change-Number: 10130
        Gerrit-PatchSet: 9
        Gerrit-Owner: Jane Liu <janel...@google.com>
        Gerrit-Reviewer: Jane Liu <janel...@google.com>
        Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
        Gerrit-Reviewer: dsinclair <dsin...@chromium.org>
        Gerrit-CC: Chromium commit bot <commi...@chromium.org>
        Gerrit-Comment-Date: Wed, 09 Aug 2017 18:11:35 +0000
        Gerrit-HasComments: No
        Gerrit-HasLabels: Yes

        Jane Liu (Gerrit)

        unread,
        Aug 9, 2017, 2:35:48 PM8/9/17
        to Lei Zhang, dsinclair, Chromium commit bot, pdfium-...@googlegroups.com

        Patch set 9:Commit-Queue +2

        View Change

          To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

          Gerrit-Project: pdfium
          Gerrit-Branch: master
          Gerrit-MessageType: comment
          Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
          Gerrit-Change-Number: 10130
          Gerrit-PatchSet: 9
          Gerrit-Owner: Jane Liu <janel...@google.com>
          Gerrit-Reviewer: Jane Liu <janel...@google.com>
          Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
          Gerrit-Reviewer: dsinclair <dsin...@chromium.org>
          Gerrit-CC: Chromium commit bot <commi...@chromium.org>
          Gerrit-Comment-Date: Wed, 09 Aug 2017 18:35:47 +0000
          Gerrit-HasComments: No
          Gerrit-HasLabels: Yes

          Chromium commit bot (Gerrit)

          unread,
          Aug 9, 2017, 2:35:56 PM8/9/17
          to Jane Liu, Lei Zhang, dsinclair, pdfium-...@googlegroups.com

          Chromium commit bot merged this change.

          View Change

          Approvals: Lei Zhang: Looks good to me dsinclair: Looks good to me Jane Liu: Commit
          API and test for retrieving image filters from image objects

          Added FPDFImageObj_GetImageFilterCount() and
          FPDFImageObj_GetImageFilters() for retrieving image filters of image
          objects.
          * Added a corresponding embedder test.
          * Changed the filter of an image object in embedded_image.pdf from
          DCTDecode to ASCIIHexDecode + DCTDecode, so we have a test case
          for images with more than one filter.

          Bug=pdfium:677

          Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
          Reviewed-on: https://pdfium-review.googlesource.com/10130
          Reviewed-by: Lei Zhang <the...@chromium.org>
          Reviewed-by: dsinclair <dsin...@chromium.org>
          Commit-Queue: Jane Liu <janel...@google.com>

          ---
          M fpdfsdk/fpdfedit_embeddertest.cpp
          M fpdfsdk/fpdfeditimg.cpp
          M fpdfsdk/fpdfview_c_api_test.c
          M public/fpdf_edit.h
          M testing/resources/embedded_images.pdf
          5 files changed, 118 insertions(+), 0 deletions(-)

          diff --git a/fpdfsdk/fpdfedit_embeddertest.cpp b/fpdfsdk/fpdfedit_embeddertest.cpp
          index c381b25..e62ef21 100644
          --- a/fpdfsdk/fpdfedit_embeddertest.cpp
          +++ b/fpdfsdk/fpdfedit_embeddertest.cpp
          @@ -1038,3 +1038,49 @@
          // There should be no memory leaks with a call to FPDFPageObj_Destroy().
          FPDFPageObj_Destroy(rect);
          }
          +
          +TEST_F(FPDFEditEmbeddertest, GetImageFilters) {
          + EXPECT_TRUE(OpenDocument("embedded_images.pdf"));
          + FPDF_PAGE page = LoadPage(0);
          + ASSERT_TRUE(page);
          +
          + // Verify that retrieving the filter of a non-image object would fail.
          + FPDF_PAGEOBJECT obj = FPDFPage_GetObject(page, 32);
          + ASSERT_NE(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
          + ASSERT_EQ(0, FPDFImageObj_GetImageFilterCount(obj));
          + EXPECT_EQ(0u, FPDFImageObj_GetImageFilter(obj, 0, nullptr, 0));
          +
          + // Verify the returned filter string for an image object with a single filter.
          + obj = FPDFPage_GetObject(page, 33);
          + ASSERT_EQ(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
          + ASSERT_EQ(1, FPDFImageObj_GetImageFilterCount(obj));
          + unsigned long len = FPDFImageObj_GetImageFilter(obj, 0, nullptr, 0);
          + std::vector<char> buf(len);
          + EXPECT_EQ(24u, FPDFImageObj_GetImageFilter(obj, 0, buf.data(), len));
          + EXPECT_STREQ(L"FlateDecode",
          + GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data()))
          + .c_str());
          + EXPECT_EQ(0u, FPDFImageObj_GetImageFilter(obj, 1, nullptr, 0));
          +
          + // Verify all the filters for an image object with a list of filters.
          + obj = FPDFPage_GetObject(page, 38);
          + ASSERT_EQ(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
          + ASSERT_EQ(2, FPDFImageObj_GetImageFilterCount(obj));
          + len = FPDFImageObj_GetImageFilter(obj, 0, nullptr, 0);
          + buf.clear();
          + buf.resize(len);
          + EXPECT_EQ(30u, FPDFImageObj_GetImageFilter(obj, 0, buf.data(), len));
          + EXPECT_STREQ(L"ASCIIHexDecode",
          + GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data()))
          + .c_str());
          +
          + len = FPDFImageObj_GetImageFilter(obj, 1, nullptr, 0);
          + buf.clear();
          + buf.resize(len);
          + EXPECT_EQ(20u, FPDFImageObj_GetImageFilter(obj, 1, buf.data(), len));
          + EXPECT_STREQ(L"DCTDecode",
          + GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data()))
          + .c_str());
          +
          + UnloadPage(page);
          +}
          diff --git a/fpdfsdk/fpdfeditimg.cpp b/fpdfsdk/fpdfeditimg.cpp
          index 0d0c546..b4254e9 100644
          --- a/fpdfsdk/fpdfeditimg.cpp
          +++ b/fpdfsdk/fpdfeditimg.cpp
          @@ -10,6 +10,8 @@
          #include "core/fpdfapi/page/cpdf_image.h"
          #include "core/fpdfapi/page/cpdf_imageobject.h"
          #include "core/fpdfapi/page/cpdf_pageobject.h"
          +#include "core/fpdfapi/parser/cpdf_array.h"
          +#include "core/fpdfapi/parser/cpdf_name.h"
          #include "fpdfsdk/fsdk_define.h"
          #include "third_party/base/ptr_util.h"

          @@ -179,3 +181,46 @@

          return len;
          }
          +
          +DLLEXPORT int STDCALL
          +FPDFImageObj_GetImageFilterCount(FPDF_PAGEOBJECT image_object) {
          + CPDF_PageObject* pObj = CPDFPageObjectFromFPDFPageObject(image_object);
          + if (!pObj || !pObj->IsImage())
          + return 0;
          +
          + CFX_RetainPtr<CPDF_Image> pImg = pObj->AsImage()->GetImage();
          + if (!pImg)
          + return 0;
          +
          + CPDF_Dictionary* pDict = pImg->GetDict();
          + CPDF_Object* pFilter = pDict ? pDict->GetDirectObjectFor("Filter") : nullptr;
          + if (!pFilter)
          + return 0;
          +
          + if (pFilter->IsArray())
          + return pFilter->AsArray()->GetCount();
          + if (pFilter->IsName())
          + return 1;
          +
          + return 0;
          +}
          +
          +DLLEXPORT unsigned long STDCALL
          +FPDFImageObj_GetImageFilter(FPDF_PAGEOBJECT image_object,
          + int index,
          + void* buffer,
          + unsigned long buflen) {
          + if (index < 0 || index >= FPDFImageObj_GetImageFilterCount(image_object))
          + return 0;
          +
          + CPDF_PageObject* pObj = CPDFPageObjectFromFPDFPageObject(image_object);
          + CPDF_Object* pFilter =
          + pObj->AsImage()->GetImage()->GetDict()->GetDirectObjectFor("Filter");
          + CFX_WideString wsFilters;
          + if (pFilter->IsName())
          + wsFilters = pFilter->AsName()->GetUnicodeText();
          + else
          + wsFilters = pFilter->AsArray()->GetUnicodeTextAt(index);
          +
          + return Utf16EncodeMaybeCopyAndReturnLength(wsFilters, buffer, buflen);
          +}
          diff --git a/fpdfsdk/fpdfview_c_api_test.c b/fpdfsdk/fpdfview_c_api_test.c
          index ef5b804..8276eb6 100644
          --- a/fpdfsdk/fpdfview_c_api_test.c
          +++ b/fpdfsdk/fpdfview_c_api_test.c
          @@ -136,6 +136,8 @@
          CHK(FPDFImageObj_GetBitmap);
          CHK(FPDFImageObj_GetImageDataDecoded);
          CHK(FPDFImageObj_GetImageDataRaw);
          + CHK(FPDFImageObj_GetImageFilterCount);
          + CHK(FPDFImageObj_GetImageFilter);
          CHK(FPDFPageObj_CreateNewPath);
          CHK(FPDFPageObj_CreateNewRect);
          CHK(FPDFPath_SetStrokeColor);
          diff --git a/public/fpdf_edit.h b/public/fpdf_edit.h
          index aab48af..54127d8 100644
          --- a/public/fpdf_edit.h
          +++ b/public/fpdf_edit.h
          @@ -336,6 +336,31 @@
          void* buffer,
          unsigned long buflen);

          +// Get the number of filters (i.e. decoders) of the image in |image_object|.
          +//
          +// image_object - handle to an image object.
          +//
          +// Returns the number of |image_object|'s filters.
          +DLLEXPORT int STDCALL
          +FPDFImageObj_GetImageFilterCount(FPDF_PAGEOBJECT image_object);
          +
          +// Get the filter at |index| of |image_object|'s list of filters. Note that the
          +// filters need to be applied in order, i.e. the first filter should be applied
          +// first, then the second, etc. |buffer| is only modified if |buflen| is longer
          +// than the length of the filter string.
          +//
          +// image_object - handle to an image object.
          +// index - the index of the filter requested.
          +// buffer - buffer for holding filter string, encoded in UTF16-LE.
          +// buflen - length of the buffer.
          +//
          +// Returns the length of the filter string.
          +DLLEXPORT unsigned long STDCALL
          +FPDFImageObj_GetImageFilter(FPDF_PAGEOBJECT image_object,
          + int index,
          + void* buffer,
          + unsigned long buflen);
          +
          // Create a new path object at an initial position.
          //
          // x - initial horizontal position.
          diff --git a/testing/resources/embedded_images.pdf b/testing/resources/embedded_images.pdf
          index 8184582..82adbea 100644
          --- a/testing/resources/embedded_images.pdf
          +++ b/testing/resources/embedded_images.pdf
          Binary files differ

          To view, visit change 10130. To unsubscribe, or for help writing mail filters, visit settings.

          Gerrit-Project: pdfium
          Gerrit-Branch: master
          Gerrit-MessageType: merged
          Gerrit-Change-Id: I398790a2cad33fea4ca16a0eb0889c04caa6b962
          Gerrit-Change-Number: 10130
          Gerrit-PatchSet: 10
          Gerrit-Owner: Jane Liu <janel...@google.com>
          Gerrit-Reviewer: Chromium commit bot <commi...@chromium.org>
          Gerrit-Reviewer: Jane Liu <janel...@google.com>
          Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
          Gerrit-Reviewer: dsinclair <dsin...@chromium.org>
          Reply all
          Reply to author
          Forward
          0 new messages