summaryrefslogtreecommitdiff
path: root/core/fxge
AgeCommit message (Collapse)Author
2017-01-23Update safe numerics package to get bitwise opstsepez
Fix callers conventions to avoid ambiguity. Fix bad bounds check unmasked by change. Directly include headers no longer pulled in by numerics itself. Review-Url: https://codereview.chromium.org/2640143003
2017-01-16Add default substitution for narrow fontsNicolas Pena
BUG=669893 Change-Id: I0977c031d5b272ce5182da6b3020ac092e30aef4 Reviewed-on: https://pdfium-review.googlesource.com/2210 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org> Commit-Queue: Nicolás Peña <npm@chromium.org>
2017-01-12Add postscript pathrbpotter
This patch adds the additional functions required to make postscript printing functional. The most significant additions are are two added compression functions and a new API for setting the postscript level. Not currently called from Chromium, Chromium patch to come. BUG= Review-Url: https://codereview.chromium.org/2612243005
2017-01-10Remove CFX_ArrayTemplate in cfx_psrender.tsepez
Use unique_ptr while we're at it. Review-Url: https://codereview.chromium.org/2618373003
2017-01-09HardClip all points used when building pathsNicolas Pena
CAgg_PathData::BuildPath already HardClips x, y. We need to do this to any other points used, otherwise we risk having huge numbers, and when calling agg methods on these we'll be super slow. BUG=670524, 678767 Change-Id: I35c1cee7bd6481ea57e0df27b2c5202d1cca3301 Reviewed-on: https://pdfium-review.googlesource.com/2158 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Nicolás Peña <npm@chromium.org>
2017-01-06Revert postscript code removal.rbpotter
Revert CL http://crrev.com/2608663003 in preparation for adding postscript generation to Pdfium. Note postscript generation code will not be called until additional patches land. These patches will also include modifications needed to make this code functional (currently missing a few compression functions). BUG= Review-Url: https://codereview.chromium.org/2615703002
2017-01-05Fix bCJK calculation in Windows MapFontnpm
I think the bCJK variable calculation is wrong. If not, then it is not necessary, since currently it will always be set to false. CL that added this code: https://codereview.chromium.org/1306883002/ Review-Url: https://codereview.chromium.org/2611843008
2017-01-05Remove unused CPDF_ImageCacheEntry::GetCachedBitmapNicolas Pena
GetCachedBitmap method is not being used. This removal simplifies some of the code. Change-Id: I075c245c3511e8a1b595c8ba148991f7c838f504 Reviewed-on: https://pdfium-review.googlesource.com/2154 Commit-Queue: Nicolás Peña <npm@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
2017-01-04Kill render_int.hchromium/2973chromium/2972Nicolas Pena
CPDF_DIBSource was already in its own file, but files needed renaming. Change-Id: Ib3ac787a0bb33d3f78ecdcdfcdbc938867857a14 Reviewed-on: https://pdfium-review.googlesource.com/2152 Commit-Queue: Nicolás Peña <npm@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
2016-12-14Remove unused m_OtfFontData.chromium/2953tsepez
In turn, this makes CFX_BinaryBuf::AttachData() unused. Review-Url: https://codereview.chromium.org/2578793002
2016-12-14More unique_ptr returns from DIB methods.tsepez
Review-Url: https://codereview.chromium.org/2572293002
2016-12-14Return unique_ptr from GetAlphaMask.tsepez
Rename GetAlphaMask => CloneAlphaMask since it does more than get. Rename CopyAlphaMask => SetAlphaMask, as it copies IN, not OUT. ditto for CopyPalette => SetPalette. BUG= Review-Url: https://codereview.chromium.org/2572243002
2016-12-12fix linux buildcaryclark
Found when adding pdf_use_skia_paths canary to skia status R=dsinclair@chromium.org, borenet@google.com BUG=skia:5849 Review-Url: https://codereview.chromium.org/2569003002
2016-12-12sync with latest skia apicaryclark
The canvas clip op changed to a enum class to safeguard against a regular enum used as a bool in an overloaded interface. R=reed@google.com, dsinclair@chromium.org Review-Url: https://codereview.chromium.org/2568193002
2016-12-12Fix dotted line drawing for GDI device driverweili
When GDI device driver draws a dotted line, it also clip the line into the device context's bound before drawing. This CL includes a couple fixes: -- When this driver is used for EMF drawing, the drawing is not bound to the device context so clipping is not needed; -- Transformation needs to be applied before clipping since the transformation may move the line into the bound; -- While checking for out-of-bound flags, bit operations are needed to make sure the discarded line is completely out of bound, not partially inside the bound; BUG=chromium:539533 Review-Url: https://codereview.chromium.org/2562533002
2016-12-09update to latest skia apichromium/2949chromium/2948chromium/2947caryclark
Skia has changed its clipping API from one enum to another. Fix PDFium to match. R=dsinclair@chromium.org,reed@google.com,herb@google.com Review-Url: https://codereview.chromium.org/2559123004
2016-12-07Refcount all the IFX_ stream classes all the time.tsepez
We can remove a lot of "bOwnsStream" logic in the process. Always pass these by const reference, in case the called method wants to hang on to the stream (one exception is where we stick a raw pointer into a void* slot in a context from another layer). Review-Url: https://codereview.chromium.org/2451493002
2016-12-06re-enable skia cachingchromium/2944caryclark
This permits consecutive path drawing or text drawing to combine if their graphics state matches. This speeds up rendering considerably when PDFium draws in many small parts. It also allows discarding changes to the clip state that have no effect from draw to draw. All corpus tests draw equivalently with caching enabled or disabled. Change the member order in CPDF_PageRenderContext so the device is flushed before the referencing annotation is deleted. Add more printf style debugging for test draws. R=dsinclair@chromium.org Review-Url: https://codereview.chromium.org/2546803003
2016-12-06Return unique_ptrs from CFX_DIBitmap::Clone().tsepez
Because that's what clone does. Perform immediate release in some spots to avoid disrupting too much at once. Review-Url: https://codereview.chromium.org/2534953004
2016-12-05enable skia gradients, fix bugscaryclark
Allow shading to use Skia for some gradients; linear, radial, and coons patch. The corpus uncovered a few gradient-related bugs in the Skia driver which are fixed as well. Fix corpus 11.pdf by ignoring zero area filled paths. PDFium uses CFX_PathData::GetZeroAreaPath() to determine if a path that doesn't enclosing anything should be drawn anyway, and CFX_AggDeviceDriver::GetDriverType() returns 1 so that the empty path is tweaked so that it doesn't draw too often. There are no tests in the corpus that show the utility of this approach; 11.pdf draws correctly if the zero area paths are ignored. Standardize debugging output so that a separate tool can visualize it. R=dsinclair@chromium.org, thestig@chromium.org Review-Url: https://codereview.chromium.org/2530343004
2016-11-28Nits in fx_ge_linuxnpm
Moved all CFX_LinuxFontInfo to the namespace. Added its constructor and destructor. And fixed includes and {}s. Review-Url: https://codereview.chromium.org/2529013002
2016-11-23Rename IFWL classes which do not have CFWL equivalentsdsinclair
This CL moves the IFWL classes that do not have CFWL class buddies to have the CFWL name. This CL leaves the tree in a weird state of having CFWL be two hierarchies, one of which is intertwined with the IFWL hierarchy. This should be commited just before the CL to move the rest of IFWL to CFWL. Review-Url: https://codereview.chromium.org/2525083002
2016-11-23fix negative font sizecaryclark
PDF can specify a negative font size to change the y-axis for text. Add support in the Skia driver for that. The cached form for text and paths had fallen out of sync with the uncached code used by skiapaths, so sync that up so that the mainline skia setting has those bug fixes as well. This does not fix the underlying bug in 528103, but gets Skia on parity with native PDFium text rendering. The bold text is still drawn in the wrong place. R=dsinclair@chromium.org BUG=528103 Review-Url: https://codereview.chromium.org/2528663002
2016-11-22handle antialiased rendering as premultipliedcaryclark
Transparencies and bitmap patterns need to be unpremultiplied after Skia renders them so that PDFium can use its own compositing. Also added some linear (i.e. axial) gradient support, although its unclear if any of the test corpus uses this feature. R=dsinclair@chromium.org Review-Url: https://codereview.chromium.org/2520073003
2016-11-21Make CPDF_Stream() take unique_ptr's to its dictionary.tsepez
Review-Url: https://codereview.chromium.org/2520493002
2016-11-21Fixup lint flags.Dan Sinclair
The -build/include setting was masking out build/include_what_you_use. This CL restores them, fixes any build errors, and adds NOLINT as needed. As well, the runtime/explicit and runtime/printf flags are aslo enabled and NOLINT'd. lint cleanups Change-Id: Ib013b3eb29c8d0e48cad74c5df9028684130719f Reviewed-on: https://pdfium-review.googlesource.com/2030 Reviewed-by: Tom Sepez <tsepez@chromium.org>
2016-11-21use skia textcaryclark
This adds text to the _SUPPORT_SKIA_PATHS_ variant. The output of the test corpus has more differences, but no feature changes or dropouts that I can see. The text is a bit lighter. Bungeman thinks this is because of our support of SRGB color, although the fonts also look different so maybe there's more to the story. The output looks compatible with the variations I see in Adobe Reader and Firefox on the same platform. There's probably more text tuning to do. Additionally, this turns off the caching feature for this variation. Caching can't work because the drawing alternates between Skia and PDFium's native blits, so any state caching won't know about changes and drawing performed by the other. R=dsinclair@chromium.org, bungeman@chromium.org Review-Url: https://codereview.chromium.org/2520483002
2016-11-18Make CPDF_Dictionary use unique pointers.chromium/2926tsepez
Some changes were required to match underlying ctors as invoked by the templated methods. Many release() calls go away, a few WrapUniques() are introduced to avoid going deeper into other code. Review-Url: https://codereview.chromium.org/2510223002
2016-11-17fix corpus testscaryclark
All corpus tests draw reasonably well. There are pixel differences, but no missing features or large scale errors. This was verified by running run_corpus_tests.py on skiapaths and agg build dirs, then running the skdiff tool to generate a report of the pixel difference. For example, after running $ ninja -C out/skia skdiff $ ./out/skia/skdiff /repo/pdfium/out/agg/gen/pdfium/testing/corpus/ /repo/pdfium/out/skiapaths/gen/pdfium/testing/corpus/ ~/aggskiadiffs view the report in a browser at ~/aggskiadiffs/index.html R=dsinclair@chromium.org BUG=skia:5973 Review-Url: https://codereview.chromium.org/2504863003
2016-11-16Create a subset of skia support for paths onlycaryclark
This is a continuation of https://codereview.chromium.org/2346483006/ This removes the need for agg, without providing full Skia support. It doesn't work yet, but it does compile and run for simple PDFs. R=dsinclair@google.com Committed: https://pdfium.googlesource.com/pdfium/+/5d223298b26c9b2b6284cba9a51521d3873b6e58 Review-Url: https://codereview.chromium.org/2491693002
2016-11-15Revert of Create a subset of skia support for paths only (patchset #10 ↵dsinclair
id:180001 of https://codereview.chromium.org/2491693002/ ) Reason for revert: Breaking the chrome roll. https://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_compile_dbg_ng/builds/306015/steps/generate_build_files%20%28with%20patch%29/logs/stdio Original issue's description: > Create a subset of skia support for paths only > > This is a continuation of https://codereview.chromium.org/2346483006/ > > This removes the need for agg, without providing > full Skia support. > > It doesn't work yet, but it does compile and run > for simple PDFs. > > R=dsinclair@google.com > > Committed: https://pdfium.googlesource.com/pdfium/+/5d223298b26c9b2b6284cba9a51521d3873b6e58 TBR=dsinclair@google.com,caryclark@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/2503883003
2016-11-15Create a subset of skia support for paths onlycaryclark
This is a continuation of https://codereview.chromium.org/2346483006/ This removes the need for agg, without providing full Skia support. It doesn't work yet, but it does compile and run for simple PDFs. R=dsinclair@google.com Review-Url: https://codereview.chromium.org/2491693002
2016-11-07Remove unused CFX_QuartzDevice(Driver) classes.chromium/2913npm
Review-Url: https://codereview.chromium.org/2484453002
2016-11-04Reland "Remove CPDF_Object::Release() in favor of direct delete"tsepez
This reverts commit f0d5b6c35fa343108a3ab7a25bc2cc2b3cf105b3. Review-Url: https://codereview.chromium.org/2478303002
2016-11-04Revert of Remove CPDF_Object::Release() in favor of direct delete (patchset ↵dsinclair
#11 id:200001 of https://codereview.chromium.org/2384883003/ ) Reason for revert: Looks like it's blocking the roll. https://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_compile_dbg_ng/builds/186619 Original issue's description: > Remove CPDF_Object::Release() in favor of direct delete > > Follow-on once we prove Release always deletes in previous CL. > > Committed: https://pdfium.googlesource.com/pdfium/+/4de3d095c9d9e961f93750cf1ebd489fd515be12 TBR=thestig@chromium.org,tsepez@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/2478253002
2016-11-03Remove CPDF_Object::Release() in favor of direct deletetsepez
Follow-on once we prove Release always deletes in previous CL. Review-Url: https://codereview.chromium.org/2384883003
2016-11-02Remove FX_BOOL from coretsepez
Review-Url: https://codereview.chromium.org/2477443002
2016-10-31Fix bool / int mismatch for win64tsepez
See https://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_compile_dbg_ng/builds/286646/steps/compile%20%28with%20patch%29/logs/stdio Review-Url: https://codereview.chromium.org/2463963002
2016-10-31remove deprecated skia transfer mode usagecaryclark
Skia has removed transfer modes as a class, and made it an enum. Update PDFium to match. R=reed@google.com,dsinclair@chromium.org Review-Url: https://codereview.chromium.org/2468443002
2016-10-28Fix FX_BOOL / int issue in fx_skia_device.cpptsepez
Review-Url: https://codereview.chromium.org/2449323006
2016-10-28Stop casting function pointers to data pointers in fx_win32_gdipext.cpp.tsepez
Only bad people do that, since it's prohibited by the C standards. Review-Url: https://codereview.chromium.org/2459603004
2016-10-28Fix more FX_BOOL / int noise in core/fpdfsdktsepez
Review-Url: https://codereview.chromium.org/2454263002
2016-10-27Fix some FX_BOOL / int noise in core/fx*chromium/2903tsepez
Review-Url: https://codereview.chromium.org/2459673002
2016-10-25Name core/fxge/android files appropriately and use one file per classnpm
- Rename files so that they correspond to class names. - Remove OS_Android ifs, since they are unneeded. - Split fpf_skiafontmgr.h into classes, one per file. Review-Url: https://codereview.chromium.org/2448293002
2016-10-25Use m_GlyphIndex as backup for m_ExtGID on Macnpm
When CGFontGetGlyphWithGlyphName returns 0, it means the glyph name was not recognized. In this case, try using the glyph index to load the glyph. BUG=pdfium:625 Review-Url: https://codereview.chromium.org/2445933002
2016-10-24Rename IFX_ stream nameschromium/2900tsepez
It's been troubling for some time that an IFX_FileStream might actually be an in-memory buffer with no backing file. Review-Url: https://codereview.chromium.org/2443723002
2016-10-21Clean up fpf_skiafontmgrnpm
Remove unused methods, create namespace, nits. Review-Url: https://chromiumcodereview.appspot.com/2433543002
2016-10-17Move fxge/android to if(is_android) on buildchromium/2894npm
core/fxge/android files all have if _FX_OS_ == _FX_ANDROID_. Instead, put the files inside if (is_android) on Build.gn. Also, the skia file is already under if (pdf_use_skia), so the if defined(_SKIA_SUPPORT_) can be removed. Review-Url: https://codereview.chromium.org/2413983004
2016-10-17Rename CFX_CountRef to CFX_SharedCopyOnWritetsepez
Avoid confusing this class with other ref-counted objects. Review-Url: https://codereview.chromium.org/2426673002
2016-10-17Strengthen bounds check in CWeightTable::Calc * part IIstackexploit
This CL implemented a better version of CWeightTable::GetPixelWeightSize(), which will calculate the size of array PixelWeight.m_Weights correctly to prevent potential heap buffer overflow conditions. BUG=chromium:654183 R=ochang@chromium.org, thestig@chromium.org, dsinclair@chromium.org Review-Url: https://codereview.chromium.org/2404453003