Commit Graph

93 Commits

Author SHA1 Message Date
reed@google.com
83f7c65946 add new gms for shallow_gradient, in preparation for improving their quality
git-svn-id: http://skia.googlecode.com/svn/trunk@7544 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-04 16:56:15 +00:00
senorblanco@chromium.org
3f2d45aff6 (Relanding r7275 with assert fix, plus fixes from r7276, r7280, r7283.)
Implement a bicubic resampling image filter, with raster and GPU backends.
In order to get this to work on the GPU side, I had to modify the width and height of the drawn texture in drawSprite() and drawDevice() to use the filtered texture's dimensions, instead of the source texture.  (This wasn't a problem before since all other image filters produce results the same dimensions as their input texture.)
For now, this implementation only does axis-aligned scaling (same as the Lanczos-3 implementation in Chrome).  It's also done for correctness and clarity, not speed, so there are lots of opportunities for speedups.

Committed: https://code.google.com/p/skia/source/detail?r=7275

Review URL: https://codereview.appspot.com/7033049

git-svn-id: http://skia.googlecode.com/svn/trunk@7287 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-18 20:48:20 +00:00
robertphillips@google.com
c51f752554 Reverting chain of SkBicubicImageFilter changes (7275, 7276, 7280 & 7283)
git-svn-id: http://skia.googlecode.com/svn/trunk@7285 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-18 19:20:52 +00:00
senorblanco@chromium.org
744820e657 Implement a bicubic resampling image filter, with raster and GPU backends.
In order to get this to work on the GPU side, I had to modify the width and height of the drawn texture in drawSprite() and drawDevice() to use the filtered texture's dimensions, instead of the source texture.  (This wasn't a problem before since all other image filters produce results the same dimensions as their input texture.)
For now, this implementation only does axis-aligned scaling (same as the Lanczos-3 implementation in Chrome).  It's also done for correctness and clarity, not speed, so there are lots of opportunities for speedups.

Review URL: https://codereview.appspot.com/7033049

git-svn-id: http://skia.googlecode.com/svn/trunk@7275 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-18 17:29:15 +00:00
reed@google.com
12fa9bad91 add gm for comparing drawSprite and drawBitmap
git-svn-id: http://skia.googlecode.com/svn/trunk@7235 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-16 18:54:15 +00:00
sugoi@google.com
781cc76e0f Implementation of the displacement effect (both CPU and GPU)
TEST=Added new GM called "displacement"
Review URL: https://codereview.appspot.com/7058075

git-svn-id: http://skia.googlecode.com/svn/trunk@7182 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-15 15:40:19 +00:00
robertphillips@google.com
4e18c7a9bb Add RRect GM
https://codereview.appspot.com/6945063/



git-svn-id: http://skia.googlecode.com/svn/trunk@6866 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-17 21:48:19 +00:00
mike@reedtribe.org
37071640f6 add gm for rrect, and rrect.inset/outset
git-svn-id: http://skia.googlecode.com/svn/trunk@6832 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-17 02:10:42 +00:00
reed@google.com
b1c8827321 add gm/pathinterior.cpp in advance of cary's path api
git-svn-id: http://skia.googlecode.com/svn/trunk@6668 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-04 22:52:28 +00:00
scroggo@google.com
9f686f3639 Create a factory to decode an SkBitmap from an SkData.
Add a test and a GM for the factory, and a PNG file for it to decode.
The PNG file is copyright-free, obtained from
http://openclipart.org/detail/29213/paper-plane-by-ddoo

In cmykjpeg, do not attempt to decode in the constructor, since it
currently crashes on Mac (if you provide the correct resource path).
Even when we fix this crash there is no need to do it in the
constructor, since we create all of the gms in order to
get their names (to determine whether to run them).

Review URL: https://codereview.appspot.com/6847122

git-svn-id: http://skia.googlecode.com/svn/trunk@6618 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-29 21:05:37 +00:00
reed@google.com
603dbedf29 add specialty strokeRect() to SkStroke, which can return much cleaner results
Review URL: https://codereview.appspot.com/6843093

git-svn-id: http://skia.googlecode.com/svn/trunk@6510 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-20 19:00:28 +00:00
reed@google.com
5dd85a45bc add gm for srcmode (and clearmode) in prep for optimization work
git-svn-id: http://skia.googlecode.com/svn/trunk@6429 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-15 13:46:47 +00:00
reed@google.com
db87c96085 add blurrect gm
git-svn-id: http://skia.googlecode.com/svn/trunk@6284 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-02 21:11:12 +00:00
reed@google.com
4117a24de4 add test for bug in line drawing. fix is pending a way to handle all of the
rebaselines...



git-svn-id: http://skia.googlecode.com/svn/trunk@6208 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-30 20:26:58 +00:00
bsalomon@google.com
c6126c1828 Add a GM that tests xfermode-based color filters.
Review URL: https://codereview.appspot.com/6736052

git-svn-id: http://skia.googlecode.com/svn/trunk@6022 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-19 19:26:05 +00:00
bsalomon@google.com
42316095ec Add new GM, shadertext3. It would have revealed a bug in the GPU draw-large-text-as-path code path that was recently fixed.
R=reed@google.com
Review URL: https://codereview.appspot.com/6638057

git-svn-id: http://skia.googlecode.com/svn/trunk@5932 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-12 19:26:15 +00:00
senorblanco@chromium.org
8d21f6c7a9 When two or more color matrix image filters are connected together, and the non-leaf matrices do not require clamping, we can concatenate their matrices and apply them together.
Review URL: https://codereview.appspot.com/6489054

git-svn-id: http://skia.googlecode.com/svn/trunk@5931 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-12 19:14:06 +00:00
bsalomon@google.com
41fe45b955 Add a new GM: shadertext2.
It tests a bitmap shader with various combinations of matrices and shader matrices. The text is drawn filled and stroked.
Review URL: https://codereview.appspot.com/6639052

git-svn-id: http://skia.googlecode.com/svn/trunk@5877 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-10 13:35:23 +00:00
reed@google.com
1ba274d9f3 revert 5794
git-svn-id: http://skia.googlecode.com/svn/trunk@5795 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-03 20:40:38 +00:00
reed@google.com
4837724a7e add test for rotated saveLayer, to see that we clip against the specified bounds
(hint: we don't at the moment)



git-svn-id: http://skia.googlecode.com/svn/trunk@5794 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-03 20:17:22 +00:00
mike@reedtribe.org
9a520eb745 revert 5681
git-svn-id: http://skia.googlecode.com/svn/trunk@5682 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-26 03:08:16 +00:00
mike@reedtribe.org
4269631bdf remove SampleXfermodes.cpp (obsolete, as we have it as a GM)
git-svn-id: http://skia.googlecode.com/svn/trunk@5681 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-26 03:06:55 +00:00
senorblanco@chromium.org
5faa2dc266 Implements a matrix convolution filter (raster path only). The filtering loop
is templated on the tiling mode for speed:  interior pixels are unconditionally
fetched; border pixels apply the appropriate tiling mode before fetching.  It
handles target, bias, divisor (as gain), and edge modes (named to be more
skia-like).  It does not handle the "preserveAlpha" semantics of
feConvolveMatrix, nor "kernelUnitLength".



git-svn-id: http://skia.googlecode.com/svn/trunk@5592 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-18 20:32:34 +00:00
reed@google.com
7112173c3c re-re-land 5578
will follow w/ new .skp files to keep the waterfall green (I hope)



git-svn-id: http://skia.googlecode.com/svn/trunk@5584 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-18 15:14:33 +00:00
reed@google.com
10f9f4a844 revert 5580
git-svn-id: http://skia.googlecode.com/svn/trunk@5581 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-18 14:04:54 +00:00
reed@google.com
eab16dea1c re-land 5578 w/ pipe fix
git-svn-id: http://skia.googlecode.com/svn/trunk@5580 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-18 13:47:20 +00:00
reed@google.com
c75c36a14b revert 5578 -- broke pipe
git-svn-id: http://skia.googlecode.com/svn/trunk@5579 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-18 13:20:52 +00:00
reed@google.com
f1ab723033 Change drawBitmapRect to take a float-src-rect instead of integer-src-rect. This
allows the client more control over the scaling. Because of virtual overrides
and wanting to keep the old call-sites up and running, this CL renames the
virtual entry-point to drawBitmapRectToRect, and downgrades drawBitmapRect to
a non-virtual helper function.

The implementation is to use the float-rect for computing the matrix, but still
cons-up an integer rect for the purposes of subsetting the original bitmap. We
do this by calling float_src->roundOut(&int_src) so that we include all
(partially) covered src pixels.

No change needed on SkDevice, since that signature is explicitly passed the
computed matrix.
Review URL: https://codereview.appspot.com/6501140

git-svn-id: http://skia.googlecode.com/svn/trunk@5578 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-18 12:59:44 +00:00
rileya@google.com
ffadfb5d43 Add gm to test SkRegion/clipPath bug.
Review URL: https://codereview.appspot.com/6501131

git-svn-id: http://skia.googlecode.com/svn/trunk@5540 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-14 13:53:36 +00:00
reed@google.com
9135939581 rm temp slides
git-svn-id: http://skia.googlecode.com/svn/trunk@5488 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-11 17:46:42 +00:00
reed@google.com
3d1a9963bc add techtalk slide for now (can remove it tomorrow)
git-svn-id: http://skia.googlecode.com/svn/trunk@5461 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-10 14:27:37 +00:00
reed@google.com
97af1a64ae Add caching of the snapshot image form a surface
Notify the surface when the canvas draws into it, so it can invalidate the
cached image, and (if needed) perform a copy-on-write on the surface if it
was being shared with the image.
Review URL: https://codereview.appspot.com/6441115

git-svn-id: http://skia.googlecode.com/svn/trunk@5306 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-28 12:19:02 +00:00
senorblanco@chromium.org
b2ee33c535 Implements the non-Porter-Duff compositing modes required for SVG's feBlend
element.  This filter has two inputs, since normal blending can't be used.  The
GPU side uses two filter stages to accomplish this:  one to sample the
background, and one to sample the foreground and blend it.

Review URL:  https://codereview.appspot.com/6463081/



git-svn-id: http://skia.googlecode.com/svn/trunk@5231 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-22 16:24:44 +00:00
senorblanco@chromium.org
f1369ce607 Implements a new class, SkSingleInputImageFilter, to handle DAG connectivity
for filters with a single image input.  This provides functionality to store,
flatten and unflatten a single SkImageFilter input, as well as to recursively
evaluate it on the CPU or GPU.  The following classes were re-parented to 
implement DAG connectivity:  SkBlurImageFilter, SkDilateImageFilter,
SkErodeImageFilter, SkColorFilterImageFilter.  The constructors for each
have been appended with a new parameter, representing the input filter
(default NULL).

This change also implements an arbitrary SkBitmap input source for filtering,
SkBitmapSource.

NOTE:  This CL will require gyp file changes when rolling past this revision.

Review URL:  https://codereview.appspot.com/6462071/



git-svn-id: http://skia.googlecode.com/svn/trunk@5170 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-20 14:53:21 +00:00
bsalomon@google.com
82aa7482cb Add a zoom filter to Skia. This will be used on ChromeOS to implement the screen magnifier.
Committed on behalf of zork@chromium.org

Review URL: http://codereview.appspot.com/6354065/


git-svn-id: http://skia.googlecode.com/svn/trunk@5056 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-13 14:22:17 +00:00
mike@reedtribe.org
3d1cb97240 move texteffects from Sample to gm
git-svn-id: http://skia.googlecode.com/svn/trunk@5051 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-13 00:52:07 +00:00
reed@google.com
d74e710c00 remove SkShape (unused)
Review URL: https://codereview.appspot.com/6461069

git-svn-id: http://skia.googlecode.com/svn/trunk@5033 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-09 18:05:33 +00:00
reed@google.com
7eb3a2653b add gm for very large bitmaps (>32K >64K)
raster expected to fail when scaling >64K (for now)



git-svn-id: http://skia.googlecode.com/svn/trunk@4967 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-07 14:05:14 +00:00
reed@google.com
a7ffb956cb remove '../gm/image.cpp',
git-svn-id: http://skia.googlecode.com/svn/trunk@4855 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-31 15:01:57 +00:00
reed@google.com
076f4c9791 fix LayerDrawLooper to record its fFlagsMask
convert SampleDrawLooper to a GM



git-svn-id: http://skia.googlecode.com/svn/trunk@4854 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-31 14:32:38 +00:00
scroggo@google.com
58be682c77 Share code in various SkGPipeCanvas::drawBitmap_ calls.
Also implement SkGPipeCanvas::drawBitmapMatrix, and
create a GM to make sure it works properly.

Use a flag instead of writing a bool for determining whether
drawBitmap_ has a paint and whether drawBitmapRect has a source
rectangle.

BUG=
TEST=drawbitmapmatrix GM

Review URL: https://codereview.appspot.com/6450053

git-svn-id: http://skia.googlecode.com/svn/trunk@4828 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-30 14:40:01 +00:00
scroggo@google.com
3cb969f27d In SkGPipe, only serialize SkTypefaces in cross process mode.
Also make SkGPipeController ref the recording canvas to ensure that
objects used by SkGPipeCanvas (e.g. SharedHeap and fTypefaceSet, which
hold references to objects to which pointers are written to the stream)
survive to be played back even if SkGPipeWriter.endRecording() is called.

BUG=
TEST=TypefaceGM

Review URL: https://codereview.appspot.com/6447055

git-svn-id: http://skia.googlecode.com/svn/trunk@4817 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-27 20:39:19 +00:00
reed@google.com
ca0062ee5e add SkPaint::getPosTextPath(), with gm to test it
Review URL: https://codereview.appspot.com/6427055

git-svn-id: http://skia.googlecode.com/svn/trunk@4684 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-20 11:20:32 +00:00
reed@google.com
8d850be3aa don't add circles on chopped cubics
git-svn-id: http://skia.googlecode.com/svn/trunk@4600 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-13 15:55:15 +00:00
mike@reedtribe.org
43c62b11ec add gm for hittesting paths
git-svn-id: http://skia.googlecode.com/svn/trunk@4438 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-03 02:44:02 +00:00
scroggo@google.com
4f1f6bf050 Properly handle extracted bitmaps in cross process/shared addr space SkGPipe.
Use the pixel ref which we have already copied and the appropriate pixel ref
offset.

Turn SampleDrawBitmap into a GM to test this functionality.

Review URL: https://codereview.appspot.com/6348059

git-svn-id: http://skia.googlecode.com/svn/trunk@4417 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-02 13:35:09 +00:00
scroggo@google.com
32f20eb02c Create a new GM to exercise ComposeShader.
Code borrowed from samplecode/SampleShaders.cpp

Review URL: https://codereview.appspot.com/6371043

git-svn-id: http://skia.googlecode.com/svn/trunk@4407 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-06-29 17:28:50 +00:00
senorblanco@chromium.org
f49b429cef Raster implementation of diffuse and specular lighting filters. Externally,
the caller instantiates a light (distant, point or spot), and an
SkDiffuseLightingFilter or SkSpecularLightingImageFilter with that light.  A
Sobel edge detection filter is applied to the alpha of the incoming bitmap, and
the result is used as a height map for lighting calculations.

Review URL:  http://codereview.appspot.com/6302101/



git-svn-id: http://skia.googlecode.com/svn/trunk@4314 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-06-22 21:01:23 +00:00
reed@google.com
4384fabab4 add gm (no images yet) for two-point-radial gradients
git-svn-id: http://skia.googlecode.com/svn/trunk@4163 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-06-05 16:14:23 +00:00
robertphillips@google.com
67febd9506 Converted AAClips SampleApp slide to GM:simpleaaclip
http://codereview.appspot.com/6220043/



git-svn-id: http://skia.googlecode.com/svn/trunk@4025 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-05-22 12:14:50 +00:00