Commit Graph

1274 Commits

Author SHA1 Message Date
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
junov@chromium.org
b6e161937b Adding isOpaque method to skia shader classes
REVIEW=http://codereview.appspot.com/5451102/
TEST=unit test ShaderOpacity



git-svn-id: http://skia.googlecode.com/svn/trunk@2840 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-09 15:48:03 +00:00
reed@google.com
0e734bdc42 revert 2826, restore option for non-dithered gradients (used by chrome)
git-svn-id: http://skia.googlecode.com/svn/trunk@2836 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-08 17:24:44 +00:00
reed@google.com
88ca1b4102 use dithered gradients by default
git-svn-id: http://skia.googlecode.com/svn/trunk@2826 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-08 14:14:02 +00:00
reed@google.com
8e6d914b87 fix win compile: sure wish SK_OVERRIDE was testable on mac build
git-svn-id: http://skia.googlecode.com/svn/trunk@2821 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-07 15:30:34 +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
tomhudson@google.com
01224d5d0a Unroll loops in SkBlurMask for speedup on Windows (benchmarks should see
15% on interpolated blurs, 5-10% on simple blurs).



git-svn-id: http://skia.googlecode.com/svn/trunk@2755 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-11-28 18:22:01 +00:00
tomhudson@google.com
8caac6447d Add fractional-radius blurs to blur benchmark.
Specialize loops in apply_kernel and apply_kernel_interp,
improving blur benchmark performance by 25%.



git-svn-id: http://skia.googlecode.com/svn/trunk@2731 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-11-22 15:58:06 +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
045e62d715 enable soft clipping (yikes)
git-svn-id: http://skia.googlecode.com/svn/trunk@2515 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-10-24 12:19:46 +00:00
bungeman@google.com
18ac1ba3d1 Make asBlur method const.
http://codereview.appspot.com/5190041/

This change makes asBlur const consistent with SkShader::asAGradient and asABitmap.


git-svn-id: http://skia.googlecode.com/svn/trunk@2404 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-10-04 15:11:38 +00:00
bungeman@google.com
5eba98c4d1 Now that layout tests are fixed, remove flag to ignore margin fix.
http://codereview.appspot.com/5186044/


git-svn-id: http://skia.googlecode.com/svn/trunk@2403 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-10-04 13:39:37 +00:00
tomhudson@google.com
3e0f22c060 Add SK_RESTRICT inside radial gradient shader - we can't currently see a benefit, but it shouldn't hurt, and some compiler somewhere ought to benefit from it.
git-svn-id: http://skia.googlecode.com/svn/trunk@2383 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-09-30 14:31:28 +00:00
tomhudson@google.com
889bd8bd7f Make SkMath.h less visible in public header files.
git-svn-id: http://skia.googlecode.com/svn/trunk@2340 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-09-27 17:38:17 +00:00
tomhudson@google.com
5ea050f662 Optimize software radial gradients (remove branches from the inner loop where
we can, because an entire row is conservatively either outside or inside the
gradient.) Change the gradient benchmark to capture both cases, and add new
gm to detect errors in these optimized paths.



git-svn-id: http://skia.googlecode.com/svn/trunk@2327 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-09-26 15:03:55 +00:00
reed@google.com
51baf5abe7 speed up radial-mirror 16x, sweep by ~2x
git-svn-id: http://skia.googlecode.com/svn/trunk@2294 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-09-21 13:38:36 +00:00
reed@google.com
dd5bd670e6 add SK_RESTRICT in shadeSpan methods
git-svn-id: http://skia.googlecode.com/svn/trunk@2288 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-09-20 15:56:13 +00:00
bungeman@google.com
1c8e874b92 Ignore blur margin fix flag for backward bug compatibility.
http://codereview.appspot.com/4981046/


git-svn-id: http://skia.googlecode.com/svn/trunk@2219 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-09-06 15:34:31 +00:00
bungeman@google.com
5af16f8d67 Reduce size of filter mask.
http://codereview.appspot.com/4965057/

Reduce the size of filter masks, fix HQ blur when clipped, and add tests.


git-svn-id: http://skia.googlecode.com/svn/trunk@2211 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-09-02 15:06:44 +00:00
reed@google.com
03016a3620 style cleanup
git-svn-id: http://skia.googlecode.com/svn/trunk@2104 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-12 14:59:59 +00:00
reed@google.com
16edff2b1c style cleanup
git-svn-id: http://skia.googlecode.com/svn/trunk@2101 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-12 14:10:27 +00:00
reed@google.com
d7a6fb9779 style cleanup
git-svn-id: http://skia.googlecode.com/svn/trunk@2100 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-12 14:04:15 +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
9de4dc9b1e check for non-finite values that can make us overshoot
git-svn-id: http://skia.googlecode.com/svn/trunk@1870 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-15 14:14:45 +00:00
reed@google.com
895ce131de remove dead code
git-svn-id: http://skia.googlecode.com/svn/trunk@1824 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-07 20:04:22 +00:00
reed@google.com
2b75f4279a add asABlur() to maskfilters, so devices like gpu and pdf can query them.
git-svn-id: http://skia.googlecode.com/svn/trunk@1816 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-07 13:43:38 +00:00
reed@google.com
95eed983be ensure that our bitmap is built with opaque cachedalpha
git-svn-id: http://skia.googlecode.com/svn/trunk@1789 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-05 17:01:56 +00:00
reed@google.com
0b8b3bb083 make inline version of premultiply, to speed up gradient creation.
We could speed-up again if we...
- respected kDither and only built 1/2 of the table for non-dither requests
- output simple params to the gpu rather than always a texture
- detected that we have no alpha, and then can skip premul per-entry



git-svn-id: http://skia.googlecode.com/svn/trunk@1772 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-30 21:06:22 +00:00
reed@google.com
21031e9ee8 fix div-by-zero (triggers debugging assert when scalar=fixed) and add master
(raster only) images for degenerate gradient test



git-svn-id: http://skia.googlecode.com/svn/trunk@1729 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-27 18:38:27 +00:00
reed@google.com
8871a84935 detect when our quadratic is really linear for 2-point radial, and don't
divide by zero, but rather just return -c/b



git-svn-id: http://skia.googlecode.com/svn/trunk@1684 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-23 15:07:04 +00:00
vandebo@chromium.org
3c898186c9 Fix more coverity defects - Uninitialized class fields.
In SkCanvas, SkBitmapCache::Entry, SkDrawLooper

CID=13440,1366,16236,14393

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

git-svn-id: http://skia.googlecode.com/svn/trunk@1671 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-22 05:01:28 +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
a87cd2af4c Increase compatibility with clang, mostly around SK_RESTRICT.
Attempting to fix up our use of __restrict__ so Chrome can enable it.



git-svn-id: http://skia.googlecode.com/svn/trunk@1597 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-15 16:50:27 +00:00
epoger@google.com
baa677b248 delete all old (non-Gyp) buildfiles
git-svn-id: http://skia.googlecode.com/svn/trunk@1583 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-14 18:35:08 +00:00
senorblanco@chromium.org
1a39493b32 Fix unnitialized memory in Sk2DPathEffect. The SkDescriptor checksum
calculation for Sk2DPathEffect currently evaluates all the bytes in the
embedded SkMatrix.  This includes the type mask, which contains some
uninitialized padding.  Changing it to use SkMatrix::flatten() and
SkMatrix::unflatten() (as SkGroupShape was doing) avoids the uninitialized
data errors.

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



git-svn-id: http://skia.googlecode.com/svn/trunk@1395 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-05-20 19:19:09 +00:00
senorblanco@chromium.org
e4c98ff48d Clean up some valgrind errors in SkTransparentShader. Valgrind complains
about overlapping memcpy().  In fact, it seems that src and dest are the same,
so we should be able to skip the copy in this case.

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



git-svn-id: http://skia.googlecode.com/svn/trunk@1393 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-05-20 19:06:10 +00:00
reed@google.com
f2eb5ab780 fix bug where we wrote uninitialized data to the flatten stream for shaders.
Both shader and gradient_shader write matrices to the flatten stream. However, they were
just calling write(&matrix, sizeof(SkMatrix)) and the matrix can contain lazily-computed
function ptrs as part of its internal cache. Thus two matrices that are logically the
same may write different bytes.

This is a problem because picture relies on flattening objects and then using the
flatten stream as a key into its cache. This matrix-write bug effectively kills the
effectiveness of the cache for shaders.

The fix is to write proper read/write functions for matrix (and region btw). These
call through to the existing low-level flatten routines (which just write into a
memory ptr).



git-svn-id: http://skia.googlecode.com/svn/trunk@1290 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-05-10 22:56:42 +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
tomhudson@google.com
938d604026 Add flattenable registrar for Two_Point_Radial_Gradient.
git-svn-id: http://skia.googlecode.com/svn/trunk@1198 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-27 13:57:03 +00:00
tomhudson@google.com
9ce767c413 Fix to (two-point radial) gradient playback error in SkPictures that swapped
the X and Y coordinates of their centers.



git-svn-id: http://skia.googlecode.com/svn/trunk@1179 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-25 20:49:39 +00:00
mike@reedtribe.org
3334c3a1fa code style
git-svn-id: http://skia.googlecode.com/svn/trunk@1160 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-20 11:39:28 +00:00
reed@google.com
13659f1f8d handle overflow
note: gradient caller doesn't so we can still draw wrong when the caller
converts its initial fx from float->fixed. Perhaps SkClampRange should offer
a float interface as well.



git-svn-id: http://skia.googlecode.com/svn/trunk@1149 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-18 19:59:38 +00:00
reed@google.com
b692a14984 disable fast linear for now (really this time)
git-svn-id: http://skia.googlecode.com/svn/trunk@1144 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-18 13:31:48 +00:00
reed@google.com
17705075b1 disable fast linear until we handle the overflow cases
git-svn-id: http://skia.googlecode.com/svn/trunk@1143 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-18 12:43:32 +00:00
reed@google.com
e61414ce7b add SK_USE_SLOW_2POINT_RADIAL_GRADIENT option for clients that like slowness
(or the previous images)



git-svn-id: http://skia.googlecode.com/svn/trunk@1140 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-15 18:14:16 +00:00
reed@google.com
5eb158d84d use SkClampRange to speedup clamp iterators
speeds up linear gradients 4x



git-svn-id: http://skia.googlecode.com/svn/trunk@1139 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-15 15:50:34 +00:00
djsollen@google.com
f5dbe2f00f Upstream android changes.
reviewed by: reed


git-svn-id: http://skia.googlecode.com/svn/trunk@1134 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-15 13:41:26 +00:00
reed@google.com
61eb040e2f code style
git-svn-id: http://skia.googlecode.com/svn/trunk@1133 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-15 12:11:12 +00:00
reed@google.com
43c50c8c77 add reflection asColorMode to SkColorFilter (for gpu)
git-svn-id: http://skia.googlecode.com/svn/trunk@1126 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-14 15:50:52 +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
84e9c0801f speed up 2-point-radial gradients by 9x, using float instead of fixed
git-svn-id: http://skia.googlecode.com/svn/trunk@1118 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-13 17:44:24 +00:00
wjmaclean@chromium.org
1fbf760a12 Fix SkFixed overflows in SkFixedSquare, SkGradientShader.
Return SK_FixedMax when overflow occurs.

git-svn-id: http://skia.googlecode.com/svn/trunk@1117 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-13 13:31:06 +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
3c1225bee4 fast return if no part of the paint gets replaced
git-svn-id: http://skia.googlecode.com/svn/trunk@1088 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-09 18:54:08 +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
mike@reedtribe.org
e5d0def6d9 fix infinite loop (doh)
git-svn-id: http://skia.googlecode.com/svn/trunk@1081 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-08 00:53:48 +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
bsalomon@google.com
dc66c42d7d Fix Two Pt Radial when circles are concentric.
Review URL: http://codereview.appspot.com/4368047/



git-svn-id: http://skia.googlecode.com/svn/trunk@1069 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-06 19:35:37 +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
junov@google.com
a639891117 Fixes shadow colors with alpha value smaller that one. Results were too transparent.
code review: codereview.appspot.com/4267052
skia bug: 170



git-svn-id: http://skia.googlecode.com/svn/trunk@924 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-03-11 16:45:00 +00:00
reed@google.com
7c2f27d788 make asABitmap() const
change private cache fields in gradient to be mutable



git-svn-id: http://skia.googlecode.com/svn/trunk@898 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-03-07 19:29:00 +00:00
vandebo@chromium.org
d3ae77965e Add asAGradient shader extraction API.
Store initial gradient parameters.
Add compile asserts in GPU code for BitmapType ordering.

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

git-svn-id: http://skia.googlecode.com/svn/trunk@845 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-02-24 00:21:06 +00:00
reed@google.com
4c09d5cd4b rename SkDeque::Iter to SkDeque::F2BIter, since it runs front-to-back (in preparation
for another iter that runs back-to-front (B2FIter).

add unittest for Deque



git-svn-id: http://skia.googlecode.com/svn/trunk@821 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-02-22 13:16:38 +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
reed@google.com
82065d667f remove SkRefCnt safeRef() and safeUnref(), and replace the call-sites with
SkSafeRef() and SkSafeUnref().

This is basically a bug waiting to happen. An optimizing compiler can remove
checks for null on "this" if it chooses. However, SkRefCnt::safeRef() relies on
precisely this check...

void SkRefCnt::safeRef() {
    if (this) {
        this->ref();
    }
}

Since a compiler might skip the if-clause, it breaks the intention of this
method, hence its removal.

static inline void SkSafeRef(SkRefCnt* obj) {
    if (obj) {
        obj->ref();
    }
}

This form is not ignored by an optimizing compile, so we use it instead.




git-svn-id: http://skia.googlecode.com/svn/trunk@762 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-02-07 15:30:46 +00:00
reed@google.com
e49d571175 fix fEntryCount when we purge a cache entry (bug caught by our validate())
git-svn-id: http://skia.googlecode.com/svn/trunk@712 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-01-19 14:30:26 +00:00
reed@google.com
9c7443db62 add SK_DISABLE_DITHER_32BIT_GRADIENT flag. If defined, disables the newly added
dithering for 32bit linear gradients.



git-svn-id: http://skia.googlecode.com/svn/trunk@699 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-01-17 18:46:37 +00:00
reed@google.com
55b8e8c81a add dithering to 32bit linear gradients
git-svn-id: http://skia.googlecode.com/svn/trunk@691 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-01-13 16:22:35 +00:00
reed@google.com
57c3a863fc update copyright
git-svn-id: http://skia.googlecode.com/svn/trunk@662 2bbb7eff-a529-9590-31e7-b0007b416f81
2010-12-23 20:34:08 +00:00
reed@google.com
dc731fd483 merge in gpu changes to gradientshaders
git-svn-id: http://skia.googlecode.com/svn/trunk@655 2bbb7eff-a529-9590-31e7-b0007b416f81
2010-12-23 15:19:47 +00:00
senorblanco@chromium.org
29e5054dd0 Fix perf regression in Color32.
The regression was due to the fact that we were calling PlatformColorProc() for
every span (which in turns makes CPUID, a fairly expensive call).  Since we draw
a lot of rects, and rects have 1-pixel wide spans for the vertical segments,
that's a lot of CPUID.

Fixed by cacheing the result of PlatformColorProc(), as is done for the other
platform-specific blitters.

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



git-svn-id: http://skia.googlecode.com/svn/trunk@636 2bbb7eff-a529-9590-31e7-b0007b416f81
2010-12-16 19:07:45 +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
370eeeb032 improve precision for blend
git-svn-id: http://skia.googlecode.com/svn/trunk@529 2bbb7eff-a529-9590-31e7-b0007b416f81
2010-03-12 19:23:27 +00:00
reed@android.com
e191b16fda update windows port
git-svn-id: http://skia.googlecode.com/svn/trunk@461 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-12-18 21:33:39 +00:00
reed@android.com
200645d50e fix repeat/mirror for new larger 16bit cache
update gm images



git-svn-id: http://skia.googlecode.com/svn/trunk@459 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-12-14 16:41:57 +00:00
reed@android.com
512a87641f make the 16bit cache larger, to handle multiple colors in the gradient w/o
obvious artifacts. We need a more comprehensive fix for all gradients (32bit
and 16bit) when we have a large number of colors (or they are spaced out very
non-linearly), to avoid banding.



git-svn-id: http://skia.googlecode.com/svn/trunk@458 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-12-14 15:25:36 +00:00
reed@android.com
bcfc73321d flatten/unflatten custom fields for 2-point gradient
git-svn-id: http://skia.googlecode.com/svn/trunk@423 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-11-10 16:19:39 +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
reed@android.com
c4cae85752 add BlitRow procs for 32->32, to allow for neon and other optimizations.
call these new procs in (nearly) all the places we had inlined loops before.
In once instance (blitter_argb32::blitAntiH) we get different results by a
  tiny bit. The new code is more accurate, and exactly inline with all of the
  other like-minded blits, so I think the change is good going forward.



git-svn-id: http://skia.googlecode.com/svn/trunk@366 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-09-23 15:06:10 +00:00
reed@android.com
6c59a17e1b clear the kHasSpan16 bit for two-point-radial, since we don't implement that
fix perspective loop x (dstX)



git-svn-id: http://skia.googlecode.com/svn/trunk@364 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-09-22 20:24:05 +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
4560767bb0 fix sumbuffer to initialize its top and left colum/row with zeros. Without this fix we were
effectively chopping off the top row of pixels when we computed a blur.



git-svn-id: http://skia.googlecode.com/svn/trunk@358 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-09-21 00:27:08 +00:00
reed@android.com
0e3c664250 use rowbytes instead of bounds.width()
git-svn-id: http://skia.googlecode.com/svn/trunk@356 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-09-18 13:41:56 +00:00
reed@android.com
3c9b2a4a0e expand SkShader's flag kConstInY to 16 and 32 variants, allowing a shader
(like gradients) to support predithering. If they do, then they would suppress
kConstInY16, since they no longer are const.

The blitters now check for each flag separately, so we don't have to give up
const-in-Y in the 32bit case, since in that mode we don't care about dithering.



git-svn-id: http://skia.googlecode.com/svn/trunk@339 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-08-27 19:28:37 +00:00
reed@android.com
92a50eaab9 close out previous contour (so we don't miss the last segment)
git-svn-id: http://skia.googlecode.com/svn/trunk@325 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-08-14 19:27:37 +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
3d06a8c38d add FIXME to comment
git-svn-id: http://skia.googlecode.com/svn/trunk@253 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-07-07 18:19:59 +00:00
reed@android.com
1c12abe350 fix gradients with alpha to convert to premul *after* the intermediate color
has been computed, othewise we can't distinguish 0x00000000 from 0x00FF0000
Add fast case for index blit where we read 4 src pixels at a time



git-svn-id: http://skia.googlecode.com/svn/trunk@248 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-07-02 15:01:02 +00:00
reed@android.com
ab840b81a9 remove (ack) test code in lineargradient when pos array is null
git-svn-id: http://skia.googlecode.com/svn/trunk@247 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-07-01 17:00:03 +00:00
reed@android.com
4b7577b042 add unittest for matrix::flatten
define constant for max value flatten/unflatten can return (so clients can put
the buffer on the stack)



git-svn-id: http://skia.googlecode.com/svn/trunk@243 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-06-29 16:14:41 +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
845fdaca17 remove deprecated use of porterduff enum
git-svn-id: http://skia.googlecode.com/svn/trunk@235 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-06-23 03:01:32 +00:00
reed@android.com
a0f5d1546d move xfermode modes from porterduff into xfermode itself
git-svn-id: http://skia.googlecode.com/svn/trunk@232 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-06-22 17:38:10 +00:00
reed@android.com
5119bdb952 add shader flag kConstInY_Flag
this signals blitters that the shader will return the same results for a given
x value, independent of y. Useful inside blitRect(), where it can cache the
first call to shadeSpan() and reuse it on all subsequent scans. Works with
(non-rotated) linear-gradients, and Nx1 bitmaps.



git-svn-id: http://skia.googlecode.com/svn/trunk@214 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-06-12 21:27:03 +00:00
reed@android.com
b2c5f2d260 make the same prerounding fix for the shadeSpan16 case
git-svn-id: http://skia.googlecode.com/svn/trunk@213 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-06-12 20:09:24 +00:00
reed@android.com
c552a43c7f preround our fx fractional coordiante, so we get rounded integers (0..255) when
stepping through the gradient.



git-svn-id: http://skia.googlecode.com/svn/trunk@212 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-06-12 20:02:50 +00:00
reed@android.com
ec3d6e5a2f update for cache updates
git-svn-id: http://skia.googlecode.com/svn/trunk@202 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-06-05 14:43:55 +00:00
reed@android.com
9b46e77ec2 fix dumpcanvas to recurse on pictures and shapes
add cached bitmap for gradients to avoid thrashing textures in gl



git-svn-id: http://skia.googlecode.com/svn/trunk@201 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-06-05 12:24:41 +00:00
reed@android.com
4a7fd2bd27 initialize fFlags in gradients
fix trailing WS in SkGLDevice



git-svn-id: http://skia.googlecode.com/svn/trunk@198 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-06-02 19:46:20 +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
543ed9352c add ADD xfermode
safely handle (don't draw) if the size of SkMask exceeds 31bits



git-svn-id: http://skia.googlecode.com/svn/trunk@159 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-04-24 12:43:40 +00:00
reed@android.com
9c970453fd import portability fixes from Chrome around floats
move porting functions for SkDebugf into /ports directory



git-svn-id: http://skia.googlecode.com/svn/trunk@147 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-04-03 14:26:10 +00:00
reed@android.com
41bccf55b5 extend gradients to handle (by clamping) the first and last color position if
it is not at 0 or 1.



git-svn-id: http://skia.googlecode.com/svn/trunk@146 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-04-03 13:33:51 +00:00
reed@android.com
d252db03d9 API change: SkPath computeBounds -> getBounds
git-svn-id: http://skia.googlecode.com/svn/trunk@140 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-04-01 18:31:44 +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
49f0ff25a0 promote SkMask's rowBytes to 32bits, since its bounds is a 32bit rect
be sure a rect is sorted before using it as the path's bounds cache



git-svn-id: http://skia.googlecode.com/svn/trunk@128 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-03-19 21:52:42 +00:00
reed@android.com
3555591c15 add sanity checks to handles extremely large coordinates or filter margins.
Should not hurt features (we hope), but is an easy way to survive malicious
values on a small-memory machine like a handset.



git-svn-id: http://skia.googlecode.com/svn/trunk@123 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-03-16 18:46:55 +00:00
reed@android.com
4cb8bd18d9 add crude Makefile (someone please help!)
make SkFloatBits.cpp compile w/o floats



git-svn-id: http://skia.googlecode.com/svn/trunk@69 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-01-16 16:15:37 +00:00
reed@android.com
fc25abdabf fix warnings
git-svn-id: http://skia.googlecode.com/svn/trunk@68 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-01-15 14:38:33 +00:00
reed@android.com
0becfc5b76 add optimization for width==1 bitmaps in shader procs
odd warning fixes and cleanup



git-svn-id: http://skia.googlecode.com/svn/trunk@63 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-01-13 13:26:44 +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