Commit Graph

697 Commits

Author SHA1 Message Date
senorblanco@chromium.org
ccf225cebb This patch implements a crop rect for SkImageFilter. It has been implemented for SkColorFilterImageFilter and SkBlurImageFilter as examples.
In order to preserve the immutability of SkImageFilters, the crop rect is passed as a constructor parameter. If NULL (the default), the bounds of the input image are used, as before.

This also tightens up the boundary handling for SkImageBlurFilter on the GPU backend. Where we were previously using clamping semantics, we now respect decal semantics (so we don't oversaturate the edges). This brings the GPU and raster backends into closer alignment, but will require some new baselines for the GPU tests.

At a minimum, the following tests will need new baselines: imageblur, imagefiltersbase, imagefilterscropped, spritebitmap.

R=reed@google.com

Review URL: https://codereview.chromium.org/19775006

git-svn-id: http://skia.googlecode.com/svn/trunk@10251 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-07-22 20:03:22 +00:00
commit-bot@chromium.org
7b320703d4 Implement offset for GPU filter path. Although we can't yet use this in Blink for FEOffset, due to SVG semantics, we can use it to support crop rect (upcoming patch).
This patch adds the parameter to the filterImageGPU() signature, plumbs through the code on the GPU side, and implements support for it in SkXfermodeImageFilter for both raster and GPU.

Of the remaining filters with GPU implementations, Blur, Morphology, Bicubic and Displacement work fine; they're commutative wrt offset and can simply pass it up the chain. Blend is not, but will be removed shortly anyway (has been replaced with SkXfermodeImageFilter in Blink).

R=reed@google.com, bsalomon@google.com

Author: senorblanco@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15995026

git-svn-id: http://skia.googlecode.com/svn/trunk@9977 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-07-10 21:22:18 +00:00
reed@google.com
6ba4572eed remove dst/rendertarget support for kARGB_4444_Config
BUG=

Review URL: https://codereview.chromium.org/17335008

git-svn-id: http://skia.googlecode.com/svn/trunk@9727 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-06-21 18:30:53 +00:00
senorblanco@chromium.org
86fc266eda Implement SkXfermode image filter. This required changing the signature of SkXfermode::asNewEffectOrCoeffs(), to add an optional background texture.
For the raster path, we do a straightforward 2-pass method: draw background, then composite the foreground over it.

For the GPU path, if the xfermode can be expressed as an effect, we build an effect with the background texture incorporated, then do a single-pass draw fetching both foreground and background textures, and compositing to the result. If the xfermode is expressed as src/dst coefficients, we do a 2-pass draw as in the raster path and use fixed-function blending.

R=bsalomon@google.com, reed@google.com

Review URL: https://codereview.chromium.org/16125008

git-svn-id: http://skia.googlecode.com/svn/trunk@9373 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-31 17:49:12 +00:00
senorblanco@chromium.org
9a6eb0e1e8 Provide a GPU implementation of SkArithmeticMode, using a custom GrEffect exposed via asNewEffectOrCoeff().
Doing it this way required modifying the arithmode GM to use saveLayer()/restore() rather than creating an offscreen SkBitmap, since otherwise the compositing is always done in raster mode. Fixing that in turn exposed that SkArithmeticMode did not work in Picture mode, since it wasn't flattenable. Made it so.

Note: this will require rebaselining the arithmode GM (again).

R=bsalomon@google.com, reed@google.com

Originally committed: https://code.google.com/p/skia/source/detail?r=9324
Reverted: https://code.google.com/p/skia/source/detail?r=9325

Review URL: https://codereview.chromium.org/16064002

git-svn-id: http://skia.googlecode.com/svn/trunk@9330 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-29 20:55:09 +00:00
senorblanco@chromium.org
06e7424c70 Revert "Provide a GPU implementation of SkArithmeticMode, using a custom GrEffect exposed via asNewEffectOrCoeff()."
This reverts commit b8ffe17b5c684f9cfff02285f27e6aa1f75c9b53.

TBR=robertphillips

Review URL: https://codereview.chromium.org/16115007

git-svn-id: http://skia.googlecode.com/svn/trunk@9325 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-29 19:05:54 +00:00
senorblanco@chromium.org
6b6c1dc34c Provide a GPU implementation of SkArithmeticMode, using a custom GrEffect exposed via asNewEffectOrCoeff().
Doing it this way required modifying the arithmode GM to use saveLayer()/restore() rather than creating an offscreen SkBitmap, since otherwise the compositing is always done in raster mode. Fixing that in turn exposed that SkArithmeticMode did not work in Picture mode, since it wasn't flattenable. Made it so.

Note: this will require rebaselining the arithmode GM (again).

R=bsalomon@google.com, reed@google.com

Review URL: https://codereview.chromium.org/16064002

git-svn-id: http://skia.googlecode.com/svn/trunk@9324 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-29 18:50:46 +00:00
reed@google.com
3d3a860d0b Add flag to gradients to interpolate colors in premul space. Experimental API to encapsulate the shared parameters for all gradients into a struct.
BUG=
R=bsalomon@google.com

Review URL: https://codereview.chromium.org/15893002

git-svn-id: http://skia.googlecode.com/svn/trunk@9273 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-24 14:58:44 +00:00
robertphillips@google.com
1202c2ac56 Add printing of SkColorFilter-derived classes to debugger
https://codereview.chromium.org/15697012/



git-svn-id: http://skia.googlecode.com/svn/trunk@9255 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-23 14:00:17 +00:00
commit-bot@chromium.org
8f838259ab Add methods to SkLayerDrawLooper to allow adding layers on top
as well as on the bottom.

This is more convenient for some callers who generate layers
from a data structure in bottom-to-top, rather than top-to-bottom,
order.

BUG=242529
R=tomhudson@chromium.org

Author: jbroman@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15314003

git-svn-id: http://skia.googlecode.com/svn/trunk@9233 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-22 12:35:50 +00:00
reed@google.com
b83cb9bf89 add SkLerpXfermode
BUG=
R=bsalomon@google.com

Review URL: https://codereview.chromium.org/15602003

git-svn-id: http://skia.googlecode.com/svn/trunk@9229 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-21 21:33:11 +00:00
commit-bot@chromium.org
5da3f22003 Fix includes in SkLayerDrawLooper.h. It was previously not possible to
include this header unless SkPoint and SkPaint were previously defined.

BUG=
R=reed@google.com, senorblanco@chromium.org

Author: jbroman@chromium.org

Review URL: https://chromiumcodereview.appspot.com/14607015

git-svn-id: http://skia.googlecode.com/svn/trunk@9130 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-14 20:11:23 +00:00
sugoi@google.com
384f5e2a9b Adding missing SK_API identifier to class so that it's accessible in debug blink.
Review URL: https://codereview.chromium.org/14190016

git-svn-id: http://skia.googlecode.com/svn/trunk@8857 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-04-25 14:54:15 +00:00
senorblanco@chromium.org
d043ccee37 Allow single-pass filters (which use asNewEffect()) to participate in the image filter DAG. This was done by introducing the SkSinglePassImageFilter abstract base class, which implements canFilterImageGPU() and filterImageGPU() on behalf of the derived class. The derived class still only needs to asNewEffect(). This allows us to recurse on the filter input in SkSinglePassImageFilter::onFilterImageGPU(). It also allows us to remove any knowledge of single-pass image filters from SkGpuDevice and from the SkImageFilter base class as well.
BUG=

Review URL: https://codereview.chromium.org/13602013

git-svn-id: http://skia.googlecode.com/svn/trunk@8563 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-04-08 19:43:22 +00:00
sugoi@google.com
e3b4c5097a New SVG turbulence in Skia
This cl contains the code for CPU generation of noise.

TEST:Added 'perlinnoise' gm
Review URL: https://codereview.chromium.org/13094003

git-svn-id: http://skia.googlecode.com/svn/trunk@8541 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-04-05 13:47:09 +00:00
robertphillips@google.com
8cf10efe75 Reverting r8376, r8373 and r8371 due to Android shader compilation failures
git-svn-id: http://skia.googlecode.com/svn/trunk@8378 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-25 22:16:02 +00:00
sugoi@google.com
2daa365123 New SVG turbulence in Skia
This cl contains the code for both CPU and GPU generation of noise. Both
codepaths yield equivalent results.

TEST:Added 'perlinnoise' gm
Review URL: https://codereview.chromium.org/13047005

git-svn-id: http://skia.googlecode.com/svn/trunk@8371 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-25 19:31:04 +00:00
robertphillips@google.com
b7636d3fad Reverting 8313 (SVG turbulence) due to Ubuntu failures
git-svn-id: http://skia.googlecode.com/svn/trunk@8316 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-21 21:22:03 +00:00
sugoi@google.com
3067cc904d New SVG turbulence in Skia
This cl contains the code for both CPU and GPU generation of noise. Both codepaths yield equivalent results.

TEST:Added 'perlinnoise' gm
Review URL: https://codereview.appspot.com/7322060

git-svn-id: http://skia.googlecode.com/svn/trunk@8313 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-21 21:01:07 +00:00
robertphillips@google.com
0bd80fa01b Added toString to SkMaskFilter-derived classes
https://codereview.appspot.com/7889043/



git-svn-id: http://skia.googlecode.com/svn/trunk@8194 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-18 17:53:38 +00:00
sugoi@google.com
4b6d432f1e Small adjustments to SkRectShaderImageFilter to follow up on original cl.
Review URL: https://codereview.appspot.com/7377049

git-svn-id: http://skia.googlecode.com/svn/trunk@7816 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-21 20:26:50 +00:00
sugoi@google.com
a1c511b870 New SkRectShaderImageFilter image filter
This new changelist also introduces a new image filter called SkRectShaderImageFilter which is make to simply apply a shader on a region without using any inputs.

TEST=Added ShaderImageFilter test
Review URL: https://codereview.appspot.com/7300046

git-svn-id: http://skia.googlecode.com/svn/trunk@7808 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-21 15:02:28 +00:00
senorblanco@chromium.org
377c14a1e6 Nuke SkSingleInputImageFilter. 99% of its functionality was refactored into SkImageFilterUtils in https://code.google.com/p/skia/source/detail?r=7467, so it has outlived its usefulness.
Review URL: https://codereview.appspot.com/7277055

git-svn-id: http://skia.googlecode.com/svn/trunk@7563 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-04 22:57:21 +00:00
reed@google.com
ba3a3c93b2 revert name changes to SkBlendImageFilter. It (correctly) named its enum kMultiply_Mode,
and handled that itself internally, rather than calling SkXfermode. This CL removes
the kModulate_Mode alias from its list.



git-svn-id: http://skia.googlecode.com/svn/trunk@7509 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-01 14:35:09 +00:00
robertphillips@google.com
6cfe1fba33 Adding kMultiply_Mode (as an alias to kModulate_Mode) in SkBlendImageFilter.h to get Chrome compiling
git-svn-id: http://skia.googlecode.com/svn/trunk@7482 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-31 01:47:58 +00:00
reed@google.com
8d3cd7a170 clone of https://codereview.appspot.com/7208043/
Review URL: https://codereview.appspot.com/7232062

git-svn-id: http://skia.googlecode.com/svn/trunk@7476 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-30 21:36:11 +00:00
senorblanco@chromium.org
c2594f4106 This changes the signature of SkImageFilter::filterImageGPU() to use SkBitmaps for input and output, and removes the rect param. This allows us to return textures which are larger than the actual result, such as when GrAutoScratchTextures are used. The SkBitmap's size represents the active region, while the GrTexture's size is the full texture size.
This fixes the bicubic image filter GM on the GPU, which otherwise draws garbage outside the filtered region.  It also moves us closer to unifying the signatures of SkImageFilter::onFilterImage() and SkImageFilter::filterImageGPU().

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

git-svn-id: http://skia.googlecode.com/svn/trunk@7467 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-30 19:08:47 +00:00
robertphillips@google.com
4991b8f234 Added toString to SkDrawLooper-derived classes
https://codereview.appspot.com/7195054/



git-svn-id: http://skia.googlecode.com/svn/trunk@7422 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-28 20:21:59 +00:00
skia.committer@gmail.com
e16efc1882 Sanitizing source files in Skia_Periodic_House_Keeping
git-svn-id: http://skia.googlecode.com/svn/trunk@7406 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-26 07:06:02 +00:00
reed@google.com
4bbdeac58c add optional cull-rect to patheffects, so they can do less work if their results
lie outside of the current clip-bounds (the cull rect).
Review URL: https://codereview.appspot.com/7206044

git-svn-id: http://skia.googlecode.com/svn/trunk@7378 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-24 21:03:11 +00:00
skia.committer@gmail.com
98ded84b80 Sanitizing source files in Skia_Periodic_House_Keeping
git-svn-id: http://skia.googlecode.com/svn/trunk@7332 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-23 07:06:17 +00:00
robertphillips@google.com
b83b6b4f76 Added toString to SkXfermode-derived classes (for debugger)
https://codereview.appspot.com/7139058/



git-svn-id: http://skia.googlecode.com/svn/trunk@7308 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-22 14:32:09 +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
bsalomon@google.com
0ac6af4997 Wrap GrEffects in GrEffectPtr.
This is the first step towards automatic recycling of scratch resouces in the cache via ref-cnts.

R=robertphillips@google.com
Review URL: https://codereview.appspot.com/7092061

git-svn-id: http://skia.googlecode.com/svn/trunk@7222 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-16 15:16:18 +00:00
robertphillips@google.com
76f9e938df Added print out of SkShader information to debugger
https://codereview.appspot.com/7105045/



git-svn-id: http://skia.googlecode.com/svn/trunk@7201 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-15 20:17:47 +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
senorblanco@chromium.org
171f5c76b9 Rename onFilterImageGPU to filterImageGPU(), to match skia convention. No change in functionality.
(Note that this does mean that clients must override onFilterImage() to implement the raster path, but filterImageGPU() to implement the GPU path.)

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

git-svn-id: http://skia.googlecode.com/svn/trunk@7123 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-10 19:55:18 +00:00
mike@reedtribe.org
61490fa4d2 fix warnings related to constness in overrides of SkColorFilter
update samples for circle testing



git-svn-id: http://skia.googlecode.com/svn/trunk@6943 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-24 14:38:46 +00:00
reed@google.com
30711b764b change SkMaskFilter methods to const, in preparation for making the class as
immutable and re-entrant safe.
Review URL: https://codereview.appspot.com/6944069

git-svn-id: http://skia.googlecode.com/svn/trunk@6881 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-18 19:18:39 +00:00
reed@google.com
fdba4041c3 change all interfaces for SkRasterizer to const, in preparation for marking it
as immutable/re-entrant safe.
Review URL: https://codereview.appspot.com/6936064

git-svn-id: http://skia.googlecode.com/svn/trunk@6878 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-18 16:57:03 +00:00
reed@google.com
548a1f3210 change all patheffect methods to const, in preparation for marking its
subclasses as immutable/re-entrant safe.
Review URL: https://codereview.appspot.com/6949071

git-svn-id: http://skia.googlecode.com/svn/trunk@6877 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-18 16:12:09 +00:00
reed@google.com
bada64428a Make all colorfilter methods const, in preparation for declaring them
to be immutable and reentrant-safe

git-svn-id: http://skia.googlecode.com/svn/trunk@6856 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-17 20:21:44 +00:00
reed@google.com
30da745bbf Mark all methods on SkXfermode as const, in preparation for declaring all
xfermodes as immutable/reentrant-safe
Review URL: https://codereview.appspot.com/6941065

git-svn-id: http://skia.googlecode.com/svn/trunk@6855 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-17 19:55:24 +00:00
senorblanco@chromium.org
4a9a612b52 Pull SkMergeImageFilter out into its own file.
Review URL: https://codereview.appspot.com/6873052

git-svn-id: http://skia.googlecode.com/svn/trunk@6662 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-04 14:18:50 +00:00
senorblanco@chromium.org
91f489a65d Modify the blur bench to add tests for high-quality blurs, and large non-integer blurs. Change the Coarse flag (which just turns on separable blurs) to an #ifdef, since separable is no longer just Coarse. (This #ifdef will hopefully be shortlived, once Chrome has switched).
The separable blur algorithm gives +45% on SampleBlur, +84% on SampleBigBlur, +31% on TheVerge, +35 to +85% on blurbench in HQ (depending on size), +8 to +35% in low quality.  (All of these on 32bit MacPro).

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

git-svn-id: http://skia.googlecode.com/svn/trunk@6601 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-29 17:09:27 +00:00
skia.committer@gmail.com
687c57c7d5 Sanitizing source files in Skia_Periodic_House_Keeping
git-svn-id: http://skia.googlecode.com/svn/trunk@6594 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-29 02:01:19 +00:00
robertphillips@google.com
629ab54066 Added dashing fast path
https://codereview.appspot.com/6844067/



git-svn-id: http://skia.googlecode.com/svn/trunk@6585 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-28 17:18:11 +00:00
reed@google.com
971aca7557 change SkDrawFilter::filter to return a bool, where false means don't-draw
Review URL: https://codereview.appspot.com/6851111

git-svn-id: http://skia.googlecode.com/svn/trunk@6551 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-26 20:26:54 +00:00
senorblanco@chromium.org
336b4da6b0 Separable mask blurs: Add compile-time flag. Fix reversed offsets in asymmetrical blurs (this bug cancels itself out, but I thought it might be confusing for future readers). Use correct stride in asymmetrical blurs (this is a real bug).
Review URL: https://codereview.appspot.com/6782089

git-svn-id: http://skia.googlecode.com/svn/trunk@6508 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-20 17:09:40 +00:00
senorblanco@chromium.org
9daf96afb3 Break out SkOffsetImageFilter into its own file, and derive it from
SkSingleInputImageFilter, to make it DAG-friendly.

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

git-svn-id: http://skia.googlecode.com/svn/trunk@6315 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-06 20:29:39 +00:00
senorblanco@chromium.org
cd9f55989e Add a factory Create function for SkColorFilterImageFilter, and move the matrix optimization there. This will allow the Chrome compositor to extract the optimized matrix, and potentially apply the color matrix itself, saving a buffer allocation & draw.
Review URL: https://codereview.appspot.com/6739057

git-svn-id: http://skia.googlecode.com/svn/trunk@6152 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-26 19:37:00 +00:00
bsalomon@google.com
021fc736f8 GrCustomStage Renaming Part 5
Stuff found by searching for "stage".

R=robertphillips@google.com
Review URL: https://codereview.appspot.com/6772043

git-svn-id: http://skia.googlecode.com/svn/trunk@6089 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-25 12:47:42 +00:00
bsalomon@google.com
8ea78d83dc GrCustomStage Renaming Part 4
Rename a bunch of things found by searching for "custom".
Review URL: https://codereview.appspot.com/6765048

git-svn-id: http://skia.googlecode.com/svn/trunk@6085 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-24 20:11:30 +00:00
bsalomon@google.com
a469c28c3c CustomStage Renaming Part 1
Search and replace:
GrCustomStage->GrEffect
GrCustomStageTestFactory->GrEffectTestFactory

renamed the cpp/h files from customStage->effect

reordered gypi, #includes, forward decls to maintain alphabetical sort.

manually fixed up some whitespace and linewraps

deleted a commented out #include

R=robertphillips@google.com
Review URL: https://codereview.appspot.com/6758046

git-svn-id: http://skia.googlecode.com/svn/trunk@6076 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-24 18:28:34 +00:00
senorblanco@chromium.org
c2e8cef479 Remove use of varargs in SkImageFilter. This is causing a crash in recent
builds of clang.  (It was also masking the fact that SkMergeImageFilter was
calling the wrong constructor!)

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

git-svn-id: http://skia.googlecode.com/svn/trunk@6029 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-22 15:07:14 +00:00
bsalomon@google.com
67e78c9e47 Use GrCustomStage to implement color matrix.
R=robertphillips@google.com
Review URL: https://codereview.appspot.com/6716044

git-svn-id: http://skia.googlecode.com/svn/trunk@5975 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-17 13:36:14 +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
tfarina@chromium.org
6806fe87e0 Export effects classes with SK_API.
So this works in shared_library build in chromium.

This issue was raised up in the following chromium-dev thread:
https://groups.google.com/a/chromium.org/forum/?hl=en&fromgroups=#!topic/chromium-dev/Z6qzEw8MwVY

R=epoger@google.com,tomhudson@google.com

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

git-svn-id: http://skia.googlecode.com/svn/trunk@5914 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-12 14:41:39 +00:00
senorblanco@chromium.org
9f25de7900 This patch implements generalized DAG connectivity for SkImageFilter. SkImageFilter maintains a list of inputs, which can be constructed either from a SkImageFilter** or zero or more SkImageFilter* arguments (varargs).
Existing filters which maintained their own filter connectivity were refactored to use the new constructors and flattening/unflattening code.  Modifying the remaining filters which are not yet DAG-friendly is left for future work; they are considered to have zero inputs for now.

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

git-svn-id: http://skia.googlecode.com/svn/trunk@5891 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-10 20:36:13 +00:00
senorblanco@chromium.org
254eae2b04 Change SkLightingImageFilter to derive from SkSingleInputImageFilter, so that it can participate in filter DAGs.
No tests yet.

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

git-svn-id: http://skia.googlecode.com/svn/trunk@5832 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-05 17:38:00 +00:00
senorblanco@chromium.org
3bc16c8bc1 Implement GPU path for matrix convolution. Note that when not convolving alpha,
the premultiplying is done less efficiently than in the raster path:  it's
done on each texture access, rather than as a pre-processing pass.   This was
so I could do the filter as a single custom stage; will try the optimization
separately.

This implementation gives a ~30X speedup on the GPU results for the
matrixconvolution bench (~10X due to the GPU, and ~3X due to texture
uploads/readback removal).

Note:  this changes the matrixconvolution for the software path as well, so
it will likely break the bots until that test is rebaselined.

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



git-svn-id: http://skia.googlecode.com/svn/trunk@5809 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-04 17:18:20 +00:00
senorblanco@chromium.org
9c39744a00 Fix recursive GPU processing for SkImageFilter. Plumb through the
SkImageFilter::Proxy parameter to the GPU recursion path.  Extract
DeviceImageFilterProxy from SkCanvas.cpp into its own .h, and rename it.

https://codereview.appspot.com/6575059/



git-svn-id: http://skia.googlecode.com/svn/trunk@5720 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-27 21:57:45 +00:00
senorblanco@chromium.org
8640d5024d This patch adds support for optional processing of the alpha channel in
the matrix convolution filter.  Test cases are added to the GM and the
bench.

NOTE:  This will require rebaselining the matrixconvolution GM, so it will 
likely turn the bots red until that is done.

https://codereview.appspot.com/6547049/



git-svn-id: http://skia.googlecode.com/svn/trunk@5661 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-25 14:32:42 +00:00
skia.committer@gmail.com
c1ad022608 Sanitizing source files in Skia_Periodic_House_Keeping
git-svn-id: http://skia.googlecode.com/svn/trunk@5594 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-19 02:01:47 +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
scroggo@google.com
d8a6cc814f Make texteffects gm work through serialization and pipe.
Move Line2DPathEffect (now Sk_) into a separate header file so it can
be shared and initialized.

Switch to the shared version in SampleAll and SampleSlides.

Remove the skip pipe flag from texteffects, since it can now be serialized.

I have a separate change to turn serialization on by default at https://codereview.appspot.com/6498121/

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

git-svn-id: http://skia.googlecode.com/svn/trunk@5512 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-12 18:53:49 +00:00
rmistry@google.com
fbfcd56021 Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/)
This CL is part I of IV (I broke down the 1280 files into 4 CLs).
Review URL: https://codereview.appspot.com/6485054

git-svn-id: http://skia.googlecode.com/svn/trunk@5262 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-23 18:09:54 +00:00
senorblanco@chromium.org
1fb9525e50 warning fix (unreviewed).
git-svn-id: http://skia.googlecode.com/svn/trunk@5258 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-23 16:29:26 +00:00
senorblanco@chromium.org
84207c4278 Move the code for the GPU implementation of morphology effects from GrContext
and GrMorphologyEffect.* into SkMorphologyImageFilter.cpp.

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



git-svn-id: http://skia.googlecode.com/svn/trunk@5241 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-22 20:51:19 +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
44888c66d4 Move SkColorFilterImageFilter into its own file.
Review URL:  https://codereview.appspot.com/6463072/



git-svn-id: http://skia.googlecode.com/svn/trunk@5197 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-20 19:23:24 +00:00
senorblanco@chromium.org
bf2768bab9 Refactor SkImageFilter into its own .cpp file.
Review URL:  https://codereview.appspot.com/6465073/



git-svn-id: http://skia.googlecode.com/svn/trunk@5188 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-20 15:43:14 +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
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
djsollen@google.com
c73dd5c688 Update SkFlattenable buffers to be more modular.
This CL is an effort to stage the conversion to named
parameters for all SkFlattenable commands. This particular
stage only does the following two things...

1. Move flattenable buffers from SkFlattenable.h into
   their own header.
2. Update and Add new read write methods for better clarity
   and convenience.

BUG=

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

git-svn-id: http://skia.googlecode.com/svn/trunk@4980 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-07 15:54:32 +00:00
senorblanco@chromium.org
302cffba86 Replace the asAFoo() functions in SkImageFilter with canFilterImageGPU() and
onFilterImageGPU() virtuals.  This allows each filter to implement its own GPU
processing code, even for multi-pass filters.

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



git-svn-id: http://skia.googlecode.com/svn/trunk@4900 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-08-01 20:16:34 +00:00
senorblanco@chromium.org
894790d77c This patch implements the diffuse and specular lighting filters in Ganesh.
There are three light types for each:  distant, point and spot, whose code
generation lives in a GrGLLight class hierarchy.  This similar to the CPU
implementation, where each light type provides a function to compute the vector
from the surface plane to the light (surfaceToLight) and to compute the light
colour (emitLightColour).  Instead of templated member functions, as in the CPU
implementation, these are virtual functions to emit the light-specific GLSL
code.

All of the code for the GPU path lives in the same file as that for the CPU
path, SkLightingImageFilter.cpp.  In order to provide Ganesh a hook to access
it, SkImageFilter now has a asNewCustomStage() virtual, which allows an image
filter to return a GrCustomStage representing that filter.

Note that this patch does not handle the border conditions correctly (the
[top|bottom][Left|Right]Normal() functions in the CPU implementation).  That
will come in a future patch.

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



git-svn-id: http://skia.googlecode.com/svn/trunk@4535 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-11 16:01:22 +00:00
senorblanco@chromium.org
bdb1ec453a Minor cleanup in lighting image filters: Made the light color a member of the
light, rather than the filter, so computation is localized.  Changed a couple
of non-const refs in the image filter creation API const refs.  Changed "const
SkColor&" to "SkColor", since it's just a uint32_t anyway.

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


git-svn-id: http://skia.googlecode.com/svn/trunk@4466 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-09 14:29:51 +00:00
robertphillips@google.com
0456e0b7b8 Added Inst counting to SkFlattenable-derived classes
http://codereview.appspot.com/6355043/



git-svn-id: http://skia.googlecode.com/svn/trunk@4359 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-06-27 14:03:26 +00:00
djsollen@google.com
0833777df1 Cleanup flattening code to properly serialize lighting image filters.
Review URL: https://codereview.appspot.com/6333070

git-svn-id: http://skia.googlecode.com/svn/trunk@4340 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-06-26 14:33:13 +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
cb7be694c3 Add new gradient to support HTML Canvas2D two-point-radial-gradient. Ours is
called (for now at least) TwoPointConical, to distinguish it from the
existing one (TwoPointRadial), and to reflect its odd behavior where it draws
transparent outside the boundary of the "cone" between the two circles.

This impl is unsupported by GPU and Printing at the moment, and Chrome does not
yet invoke it.
Review URL: https://codereview.appspot.com/6299051

git-svn-id: http://skia.googlecode.com/svn/trunk@4197 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-06-06 20:31:56 +00:00
robertphillips@google.com
0090ec7cb0 Fix for compiler error in r4154
git-svn-id: http://skia.googlecode.com/svn/trunk@4155 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-06-05 13:12:53 +00:00
robertphillips@google.com
941ee9303b Fixed flattening of SkStippleMaskFilter
http://codereview.appspot.com/6279052/



git-svn-id: http://skia.googlecode.com/svn/trunk@4154 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-06-05 12:55:05 +00:00
reed@google.com
7b6c19392c remove mutable apis on SkColorMatrixFilter, must use constructor.
fix flattening to not write function-ptrs (no go for serialization), so we
store the raw float values now.

Slight change to GM/DRT images for GPU possible. Just rebaseline.
Review URL: https://codereview.appspot.com/6273052

git-svn-id: http://skia.googlecode.com/svn/trunk@4143 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-06-04 19:07:41 +00:00
tomhudson@google.com
1f90287df3 Punctuation cleanup to satisfy idiosyncracies of OpenBSD gcc 4.2.1.
Original patch by landry.breuil.

http://code.google.com/p/skia/issues/detail?id=626



git-svn-id: http://skia.googlecode.com/svn/trunk@4112 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-06-01 13:15:47 +00:00
reed@google.com
fd4be26c42 Change patheffect to take a (new) StrokeRec object, which encapsulates the fill
or stroke parameters for a path.

Today, the patheffect only sees if the caller was going to stroke or fill, and
if stroke, it just sees the width. With this change, the effect can see all of the
related parameters (e.g. cap/join/miter). No other change is intended at this
time.

After this change, I hope to use this additional data to allow SkDashPathEffect
to, at times, apply the stroke as part of its effect, which may be much more
efficient than first dashing, and then reading that and stroking it.

Most of these files changed just because of the new parameter to filterPath. The
key changes are in SkPathEffect.[h,cpp], SkPaint.cpp and SkScalerContext.cpp
Review URL: https://codereview.appspot.com/6250051

git-svn-id: http://skia.googlecode.com/svn/trunk@4048 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-05-25 01:04:12 +00:00
reed@google.com
d3521f1a8d revert 4046 -- GM:pathfill failed on one bot, maybe uninitialized memory somewhere?
git-svn-id: http://skia.googlecode.com/svn/trunk@4047 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-05-24 20:32:22 +00:00
reed@google.com
9797272edf Change patheffect to take a (new) StrokeRec object, which encapsulates the fill
or stroke parameters for a path.

Today, the patheffect only sees if the caller was going to stroke or fill, and if
stroke, it just sees the width. With this change, the effect can see all of the
related parameters (e.g. cap/join/miter). No other change is intended at this
time.

After this change, I hope to use this additional data to allow SkDashPathEffect
to, at times, apply the stroke as part of its effect, which may be much more
efficient than first dashing, and then reading that and stroking it.

Most of these files changed just because of the new parameter to filterPath. The
key changes are in SkPathEffect.[h,cpp], SkPaint.cpp and SkScalerContext.cpp
Review URL: https://codereview.appspot.com/6249050

git-svn-id: http://skia.googlecode.com/svn/trunk@4046 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-05-24 20:13:57 +00:00
epoger@google.com
20bf4ca8f5 Clean up DashPathEffect modulo math from r3761
Review URL: https://codereview.appspot.com/6124048

git-svn-id: http://skia.googlecode.com/svn/trunk@3773 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-04-27 13:34:52 +00:00
mike@reedtribe.org
90bf427001 proper handling if SkMatrix::invert failes, addresses hack fix in rev. 3657
git-svn-id: http://skia.googlecode.com/svn/trunk@3679 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-04-14 19:06:16 +00:00
djsollen@google.com
54924243c1 Cleanup code related to SkFlattenable::flatten()
The following changes were made by this CL:

1. Make flatten() a protected method as callers should use
   SkFlattenableWriteBuffer to flatten an object
2. Make flatten a const method (including subclasses)
3. Mark subclass implementation of flatten with SK_OVERRIDE
4. Ensure overridden flatten impls call their parent
5. Remove no-op implementations of flatten from subclasses

Additionally, if necessary the unflattening constructor was
also moved to the protected section of the subclasses
header if it was not already there.

git-svn-id: http://skia.googlecode.com/svn/trunk@3540 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-03-29 15:18:04 +00:00
vandebo@chromium.org
a728e35edc Fix a bunch of Coverity defects - class members not initialized in the constructor.
CID=14533,14036,9275,9271,4156,4153,4151,1666,1665,1618,1617,1616,1615

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

git-svn-id: http://skia.googlecode.com/svn/trunk@3532 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-03-28 20:29:38 +00:00
djsollen@google.com
ba28d03e94 Create macro for registering classes for deserialization
Review URL: https://codereview.appspot.com/5909063

git-svn-id: http://skia.googlecode.com/svn/trunk@3494 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-03-26 17:57:35 +00:00
djsollen@google.com
a2ca41e3af Cleanup Macros arround static initializers for SkFlattenable.
This CL also removes an unused debugging function from the class
Review URL: https://codereview.appspot.com/5890043

git-svn-id: http://skia.googlecode.com/svn/trunk@3483 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-03-23 19:00:34 +00:00
senorblanco@chromium.org
05054f1a78 Erode and dilate image filter effects, CPU and GPU implementations.
Review URL:  http://codereview.appspot.com/5656067/



git-svn-id: http://skia.googlecode.com/svn/trunk@3310 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-03-02 21:05:45 +00:00
thakis@chromium.org
2857a784f7 Remove extra SK_API
(It's already on the class, not needed on the method too.)

Review URL: http://codereview.appspot.com/5649057/
Patch from Dominic Mazzoni <dmazzoni@chromium.org>!



git-svn-id: http://skia.googlecode.com/svn/trunk@3169 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-02-10 22:49:31 +00:00
thakis@chromium.org
368b419200 Mark SkColorFilter and SkCreateCGImageRefWithColorspace as SK_API.
Required for the chromium/mac components build.

BUG=chromium:90078
Review URL: https://codereview.appspot.com/5642073/



git-svn-id: http://skia.googlecode.com/svn/trunk@3160 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-02-09 22:09:41 +00:00
vandebo@chromium.org
f724c4df1c Add SK_API to SkTableColorFilter
Patch from dmazzoni@chromium.org original CL: http://codereview.appspot.com/5645055/

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

git-svn-id: http://skia.googlecode.com/svn/trunk@3153 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-02-08 17:01:54 +00:00
reed@google.com
8bb3ba151e need to include SkColorFilter.h since we reference some methods on it
in our inline functions.



git-svn-id: http://skia.googlecode.com/svn/trunk@3089 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-01-26 04:13:31 +00:00
senorblanco@chromium.org
c79fd6ea3f Export SkColorMatrixFilter via SK_API.
Review URL:  http://codereview.appspot.com/5534064/



git-svn-id: http://skia.googlecode.com/svn/trunk@3006 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-01-10 21:56:40 +00:00
reed@google.com
76dd277b1f add filterImage() entry-point to SkDevice, to allow it to specialize on subclasses
of SkImageFilter. If that returns false, then the filter itself is invoked.



git-svn-id: http://skia.googlecode.com/svn/trunk@2977 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-01-05 21:15:07 +00:00
mike@reedtribe.org
a69b48c29d Add SkTableColorFilter, as a foundation for several SVG filters
git-svn-id: http://skia.googlecode.com/svn/trunk@2933 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-28 20:31:00 +00:00
mike@reedtribe.org
7012162d2f add SK_OVERRIDE
git-svn-id: http://skia.googlecode.com/svn/trunk@2932 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-28 20:17:42 +00:00
senorblanco@chromium.org
e5ff3cefe0 Implement SkColorFilter::asColorMatrix() virtual, and override in
SkColorMatrixFilter.  Implement missing SkColorMatrixFilter::setMatrix() and
setArray() functions (were in .h, just not implemented).  Add a gm for color
matrix filters.

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



git-svn-id: http://skia.googlecode.com/svn/trunk@2909 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-20 20:58:18 +00:00
senorblanco@chromium.org
ae814c7476 A software implementation of the Gaussian blur filter, using 3 box blurs. Also
re-enable the imageblur GM test, since the SkPicture path now works.

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



git-svn-id: http://skia.googlecode.com/svn/trunk@2905 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-20 20:02:19 +00:00
reed@google.com
32d25b6f5f initial impl of SkImageFilters : virtual signature will change!
Do not invest too much in other subclasses until this API solidifies.



git-svn-id: http://skia.googlecode.com/svn/trunk@2903 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-20 16:19:00 +00:00
caryclark@google.com
d26147adbb add optional manual global initialization
M    include/effects/SkAvoidXfermode.h
M    include/effects/SkDiscretePathEffect.h
M    include/effects/Sk1DPathEffect.h
M    include/effects/Sk2DPathEffect.h
M    include/effects/SkBlurDrawLooper.h
M    include/effects/SkPixelXorXfermode.h
M    include/effects/SkDashPathEffect.h
M    include/effects/SkColorMatrixFilter.h
M    include/effects/SkEmbossMaskFilter.h
M    include/effects/SkLayerDrawLooper.h
M    include/effects/SkGroupShape.h
M    include/effects/SkBlurImageFilter.h
M    include/effects/SkRectShape.h
A    include/effects/SkEffects.h
M    include/effects/SkCornerPathEffect.h
M    include/effects/SkGradientShader.h
M    include/effects/SkBlurMaskFilter.h
M    include/effects/SkLayerRasterizer.h
M    include/core/SkMallocPixelRef.h
M    include/core/SkFlattenable.h
M    include/core/SkShape.h
M    include/core/SkPixelRef.h
M    include/core/SkGraphics.h
M    include/core/SkPathEffect.h
M    include/core/SkPostConfig.h
M    include/core/SkXfermode.h
M    include/core/SkColorFilter.h
M    include/images/SkFlipPixelRef.h
M    include/images/SkImageRef_GlobalPool.h
M    src/effects/SkDashPathEffect.cpp
M    src/effects/SkColorMatrixFilter.cpp
M    src/effects/SkBlurImageFilter.cpp
M    src/effects/SkGroupShape.cpp
M    src/effects/SkCornerPathEffect.cpp
M    src/effects/SkGradientShader.cpp
M    src/effects/SkBlurMaskFilter.cpp
M    src/effects/SkAvoidXfermode.cpp
M    src/effects/Sk2DPathEffect.cpp
M    src/effects/SkBlurDrawLooper.cpp
M    src/effects/SkPixelXorXfermode.cpp
M    src/effects/SkColorFilters.cpp
M    src/effects/SkLayerDrawLooper.cpp
M    src/effects/SkRectShape.cpp
A    src/effects/SkEffects.cpp
M    src/effects/SkLayerRasterizer.cpp
M    src/effects/SkDiscretePathEffect.cpp
M    src/effects/Sk1DPathEffect.cpp
A    src/effects/SkEffects_none.cpp
M    src/core/SkPixelRef.cpp
M    src/core/SkGraphics.cpp
M    src/core/SkFlattenable.cpp
M    src/core/SkBitmapProcShader.h
M    src/core/SkPathEffect.cpp
M    src/core/SkShape.cpp
M    src/core/SkXfermode.cpp
M    src/core/SkMallocPixelRef.cpp
M    src/core/SkBitmapProcShader.cpp
M    src/images/SkFlipPixelRef.cpp
M    src/images/SkImageRef_GlobalPool.cpp
A    src/ports/SkGlobalInitialization_chromium.cpp
M    src/ports/SkImageRef_ashmem.h
M    src/ports/SkImageRef_ashmem.cpp
A    src/ports/SkGlobalInitialization_default.cpp
M    gyp/effects.gyp
M    gyp/tools.gyp
M    gyp/ports.gyp



git-svn-id: http://skia.googlecode.com/svn/trunk@2876 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-15 14:16:43 +00:00
mike@reedtribe.org
e51755fc64 add first cut at arithmetic mode
git-svn-id: http://skia.googlecode.com/svn/trunk@2849 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-10 19:36:56 +00:00
reed@google.com
7716afbb97 add SK_OVERRIDEs
git-svn-id: http://skia.googlecode.com/svn/trunk@2820 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-07 15:17:50 +00:00
mike@reedtribe.org
259210c376 add SK_OVERRIDE
git-svn-id: http://skia.googlecode.com/svn/trunk@2738 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-11-23 02:08:50 +00:00
reed@google.com
8426058dee ensure we never change the text_encoding of the master paint, since it is used
to interpret the text/length parameters in draw[Pos]Text.



git-svn-id: http://skia.googlecode.com/svn/trunk@2724 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-11-21 16:42:10 +00:00
senorblanco@chromium.org
54e01b2ab9 This change makes SkImageFilter and SkBlurImageFilter flattenable/unflattenable.
The imageblur test also needed to stop calling getDeviceSize(), since it was
 returning 99999x99999 for the  SkPicture case.



git-svn-id: http://skia.googlecode.com/svn/trunk@2699 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-11-16 18:20:47 +00:00
senorblanco@chromium.org
60014ca387 Implement Gaussian blurs for images. The caller creates an an
SkBlurImageFilter, sets it on an SkPaint, passes that paint to saveLayer(),
draws the primitives which are to be blurred, then calls restore(), which
applies the blur.  The blurs have separate sizes in the horizontal and vertical
direction.  This feature is GPU-only for now.

NB:  Due to the clipping change, there are slight pixel differences on the
blurs_gpu and shadows_gpu tests, so those will require rebaselining on all
platforms, as will some of the WebKit layout tests (TBD).


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



git-svn-id: http://skia.googlecode.com/svn/trunk@2643 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-11-09 16:05:58 +00:00
djsollen@google.com
56c69773ae Update files to use SK_BUILD_FOR_ANDROID.
This CL also removes any unecessary references to
the ANDROID definition.
Review URL: http://codereview.appspot.com/5354049

git-svn-id: http://skia.googlecode.com/svn/trunk@2629 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-11-08 19:00:26 +00:00
reed@google.com
43e9f20f4b add serialization to SkLayerRasterizer
git-svn-id: http://skia.googlecode.com/svn/trunk@2088 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-09 19:01:50 +00:00
reed@google.com
18dc47731f use common subclass SkPath2DPathEffect, which can be serialized
git-svn-id: http://skia.googlecode.com/svn/trunk@2087 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-09 18:47:40 +00:00
reed@google.com
e28b917669 register 1D and 2D patheffects, so they work when serialized (and piperized)
git-svn-id: http://skia.googlecode.com/svn/trunk@2085 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-09 18:14:31 +00:00
epoger@google.com
ec3ed6a5eb Automatic update of all copyright notices to reflect new license terms.
I have manually examined all of these diffs and restored a few files that
seem to require manual adjustment.

The following files still need to be modified manually, in a separate CL:

android_sample/SampleApp/AndroidManifest.xml
android_sample/SampleApp/res/layout/layout.xml
android_sample/SampleApp/res/menu/sample.xml
android_sample/SampleApp/res/values/strings.xml
android_sample/SampleApp/src/com/skia/sampleapp/SampleApp.java
android_sample/SampleApp/src/com/skia/sampleapp/SampleView.java
experimental/CiCarbonSampleMain.c
experimental/CocoaDebugger/main.m
experimental/FileReaderApp/main.m
experimental/SimpleCocoaApp/main.m
experimental/iOSSampleApp/Shared/SkAlertPrompt.h
experimental/iOSSampleApp/Shared/SkAlertPrompt.m
experimental/iOSSampleApp/SkiOSSampleApp-Base.xcconfig
experimental/iOSSampleApp/SkiOSSampleApp-Debug.xcconfig
experimental/iOSSampleApp/SkiOSSampleApp-Release.xcconfig
gpu/src/android/GrGLDefaultInterface_android.cpp
gyp/common.gypi
gyp_skia
include/ports/SkHarfBuzzFont.h
include/views/SkOSWindow_wxwidgets.h
make.bat
make.py
src/opts/memset.arm.S
src/opts/memset16_neon.S
src/opts/memset32_neon.S
src/opts/opts_check_arm.cpp
src/ports/SkDebug_brew.cpp
src/ports/SkMemory_brew.cpp
src/ports/SkOSFile_brew.cpp
src/ports/SkXMLParser_empty.cpp
src/utils/ios/SkImageDecoder_iOS.mm
src/utils/ios/SkOSFile_iOS.mm
src/utils/ios/SkStream_NSData.mm
tests/FillPathTest.cpp
Review URL: http://codereview.appspot.com/4816058

git-svn-id: http://skia.googlecode.com/svn/trunk@1982 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-28 14:26:00 +00:00
reed@google.com
6bac947cd5 Add option in flattening to write factory names inline, as we are recording.
SkGPipe needs this, since it cannot (unlike SkPicture) see all of the factories
before it hands its data to the reader.

In this mode, the writer embedds the factory name the first time it sees it,
and then after that writes an index (referencing the fFactorySet). The reader
installs an empty array, and as it encounters names, appends them to that array
so that subsequent indices can be used to retrieve the previously named factory.

Some of the existing patheffects did not register their factory names, so those
changes are also part of this CL. Annoyingly, to register your factory using the
current scheme, it has to be in the public section of the class definition.




git-svn-id: http://skia.googlecode.com/svn/trunk@1663 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-21 19:24:00 +00:00
tomhudson@google.com
1447c6f7f4 Add missing flattenable registrations and CreateProc() functions;
fixes gm --serialize xfermode test case.



git-svn-id: http://skia.googlecode.com/svn/trunk@1199 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-27 14:09:52 +00:00
mike@reedtribe.org
6b919c3537 code style
git-svn-id: http://skia.googlecode.com/svn/trunk@1159 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-20 11:17:30 +00:00
bsalomon@google.com
8c3ff17e2c Add DLL exports (Fixes Multi-DLL build in Chrome against TOT skia)
git-svn-id: http://skia.googlecode.com/svn/trunk@1137 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-15 15:42:24 +00:00
mike@reedtribe.org
a8282ef8f9 add mask for paint-bits to layerdrawlooper
change addLayer variants that don't respect paint changes to return void



git-svn-id: http://skia.googlecode.com/svn/trunk@1123 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-14 01:22:45 +00:00
reed@google.com
0716c63332 expand SkLayerDrawLooper to allow for an xfermode when transfering the paint's color,
and allow that the offset be applied pre or post



git-svn-id: http://skia.googlecode.com/svn/trunk@1115 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-12 18:32:06 +00:00
mike@reedtribe.org
0e2810be95 add optional bitflags to control which aspect of each layer's paint is applied
git-svn-id: http://skia.googlecode.com/svn/trunk@1083 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-08 02:41:54 +00:00
reed@google.com
4e2b3d3fb1 Simplify drawloopers and drawfilters. This allows the canvas to keep its
promise that const SkPaint& stay const (so we don't have bugs if a const paint
is referenced from two threads in pictures)



git-svn-id: http://skia.googlecode.com/svn/trunk@1074 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-07 14:18:59 +00:00
ctguil@chromium.org
7ffb1b21ab Add code needed to build skia as a windows dll within the chromium project.
- Export/import skia APIs if SKIA_DLL is defined.
- This change has no effect on skia.

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

git-svn-id: http://skia.googlecode.com/svn/trunk@944 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-03-15 21:27:08 +00:00
djsollen@google.com
cd9d69b9ce Upstreaming changes from android.
- fix compile warnings in the GPU code
- upstream android specific code (ifdef protected)
- fail gracefully when a custom allocator fails



git-svn-id: http://skia.googlecode.com/svn/trunk@936 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-03-14 20:30:14 +00:00
senorblanco@chromium.org
4868e6b221 [Committed on behalf of junov@chromium.org]
Fixed rendering of shadows under bitmaps.  
Added an option to SkBlurMask to produce higher quality blurs.  
The HQ blur option is propagated through SkBlurDrawLooper so that it can be invoked by WebKit for drawing shadows.
Added a shadow rendering test to gm.

Bugs fixed: 146, 150
Related Chromium bugs: 11153, 42654
Code review: http://codereview.appspot.com/4174049



git-svn-id: http://skia.googlecode.com/svn/trunk@818 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-02-18 19:03:01 +00:00
senorblanco@chromium.org
038aff623d Patch by Mike Lawther (mikelawther@chromium.org).
The HTML5 canvas client of BlurDrawLooper needs the option to not apply the
canvas transform to the blur offset.

see
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-elemen...
- "The shadowOffsetX and shadowOffsetY attributes specify the distance that the
shadow will be offset in the positive horizontal and positive vertical distance
respectively. Their values are in coordinate space units. They are not affected
by the current transformation matrix."

This patch is part of fixing
http://code.google.com/p/chromium/issues/detail?id=64647.

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



git-svn-id: http://skia.googlecode.com/svn/trunk@631 2bbb7eff-a529-9590-31e7-b0007b416f81
2010-12-06 23:45:58 +00:00
reed@android.com
81dc331e65 update layers
git-svn-id: http://skia.googlecode.com/svn/trunk@502 2bbb7eff-a529-9590-31e7-b0007b416f81
2010-02-18 19:32:03 +00:00
reed@android.com
0db5a7fae5 update dox for SkAvoidXfermode (as best I could)
fix 565 and 4444 implementations



git-svn-id: http://skia.googlecode.com/svn/trunk@420 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-11-09 16:01:36 +00:00
reed@android.com
3f2025fdb5 rename gamma to table, since it is more general than just gamma
git-svn-id: http://skia.googlecode.com/svn/trunk@412 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-10-29 17:37:56 +00:00
reed@android.com
3cfda413a2 add gamma maskfilter, especially nice when applied after a blur
git-svn-id: http://skia.googlecode.com/svn/trunk@411 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-10-29 15:19:10 +00:00
senorblanco@chromium.org
7ef071fc2f Two-point radial gradient implementation.
Review URL:  http://codereview.appspot.com/112058



git-svn-id: http://skia.googlecode.com/svn/trunk@361 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-09-22 17:25:29 +00:00
reed@android.com
29348cb061 add -forceFilter to bench tool
move some utils out of effects/



git-svn-id: http://skia.googlecode.com/svn/trunk@307 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-08-04 18:17:15 +00:00
reed@android.com
0ad336f8c6 add shape flatten so they work properly in pictures
add flatten/unflatten to matrix



git-svn-id: http://skia.googlecode.com/svn/trunk@242 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-06-29 16:02:20 +00:00
reed@android.com
048522dd2a remove remaining references to porterduff
git-svn-id: http://skia.googlecode.com/svn/trunk@236 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-06-23 12:19:41 +00:00
reed@android.com
88c2d8ef15 animate matrixref in sample shapes
git-svn-id: http://skia.googlecode.com/svn/trunk@189 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-05-27 01:44:24 +00:00
reed@android.com
aa5a7db64a move shapes subclasses into effects
git-svn-id: http://skia.googlecode.com/svn/trunk@188 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-05-27 01:20:10 +00:00
reed@android.com
f76bacff7f add SkSize for dimensions
add SkShape baseclass, in the hopes of having SkPicture inherit from that, and 
also using shapes as the extension mechanism for things like animated-gif



git-svn-id: http://skia.googlecode.com/svn/trunk@174 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-05-13 14:00:33 +00:00
reed@android.com
6c924ad46c add -pict option to bench, which draws everything through a picture, and then
compares the result to the original draws



git-svn-id: http://skia.googlecode.com/svn/trunk@139 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-03-31 03:48:49 +00:00
reed@android.com
8a1c16ff38 grab from latest android
git-svn-id: http://skia.googlecode.com/svn/trunk@27 2bbb7eff-a529-9590-31e7-b0007b416f81
2008-12-17 15:59:43 +00:00