Commit Graph

38 Commits

Author SHA1 Message Date
vmpstr
a8d4559fd6 Fix infinite matrix during an invert.
This patch ensures that when inverting a SkMatrix44, we handle small
floats properly. When inverted these can cause infinite values, but
still evaluate to true in an if condition.

BUG=chromium:498516

Review URL: https://codereview.chromium.org/1209763002
2015-06-30 13:36:04 -07:00
tfarina
20b7960798 Add isScale() helper function to SkMatrix44.
This will be used later in Chromium to cleanup gfx::Transform::IsScale2d().

BUG=408710,skia:997
TEST=None
R=bsalomon@google.com,danakj@chromium.org

Review URL: https://codereview.chromium.org/676583002
2014-10-24 08:07:05 -07:00
reed
39393e3ac3 add round/ceil/etc. for SkMScalar
BUG=skia:
TBR=

Review URL: https://codereview.chromium.org/645793006
2014-10-21 12:33:21 -07:00
tomhudson
faccb8eb53 SkMatrix44::preserves2dAxisAlignment()
Convenience function requested for Chrome compositor that may have a performance
advantage.

BUG=skia:1017
R=reed@google.com, danakj@chromium.org, vollick@chromium.org

Author: tomhudson@google.com

Review URL: https://codereview.chromium.org/508303005
2014-09-26 11:45:48 -07:00
tomhudson
a32f1758b7 Add helper SkMatrix44::hasPerspective()
BUG=skia:1017
R=danakj@chromium.org, reed@google.com

Author: tomhudson@google.com

Review URL: https://codereview.chromium.org/513343002
2014-09-16 08:29:29 -07:00
reed@google.com
4469938e92 Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning""
This reverts commit 1e787c38fa71f2a21fd728f1b1d620b9b09b0d3d.

BUG=

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

git-svn-id: http://skia.googlecode.com/svn/trunk@12057 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-10-31 17:28:30 +00:00
reed@google.com
6fcbfcead5 Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning"
This reverts commit 1d22c4aaf9d8f053f25194a1ed74b137bfb19497.

git-svn-id: http://skia.googlecode.com/svn/trunk@12056 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-10-31 16:31:11 +00:00
reed@google.com
081560e3ab add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning
BUG=
R=robertphillips@google.com, senorblanco@chromium.org, vandebo@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@12055 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-10-31 16:24:08 +00:00
commit-bot@chromium.org
722555bebb Add perspective support to SkMatrix44 initializers.
I noticed SkMatrix <-> SkMatrix44 conversions were dropping the
perspective values on the floor.  As we use SkMatrix44 heavily in
Chromium, I'm concerned this missing code will cause a bug eventually.
It should be correct to simply use the bottom row of the 4x4 matrix
excluding the third column.

Previously committed and reverted, second attempt with fix for
incorrect use of SkMScalar/SkScalar.

BUG=
R=reed@google.com, caryclark@google.com

Author: aelias@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@11624 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-10-05 01:16:30 +00:00
aelias@chromium.org
851af07b11 Revert "Add perspective support to SkMatrix44 initializers."
This reverts commit 93db1bcae0863feed8d00a61ae2cf72a90a0083c.

git-svn-id: http://skia.googlecode.com/svn/trunk@11623 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-10-04 22:26:28 +00:00
commit-bot@chromium.org
761f860a42 Add perspective support to SkMatrix44 initializers.
I noticed SkMatrix <-> SkMatrix44 conversions were dropping the
perspective values on the floor.  As we use SkMatrix44 heavily in
Chromium, I'm concerned this missing code will cause a bug eventually.
It should be correct to simply use the bottom row of the 4x4 matrix
excluding the third column.

BUG=
R=reed@google.com

Author: aelias@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@11622 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-10-04 20:38:08 +00:00
commit-bot@chromium.org
e2419cc5ed Add getFloat/setFloat funcs to SkMatrix44
These match the existing getDouble/setDouble functions.

R=reed@google.com, tomhudson@chromium.org

Author: enne@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@11355 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-09-18 18:52:09 +00:00
reed@google.com
3fda0eadac check for self-assignment in operator=
git-svn-id: http://skia.googlecode.com/svn/trunk@7610 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-06 12:47:14 +00:00
tomhudson@google.com
7cfb9c7b61 Revert r7241, which broke tests on most platforms.
git-svn-id: http://skia.googlecode.com/svn/trunk@7245 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-17 13:29:35 +00:00
tomhudson@google.com
21e4322b92 Add SSE2 multiplication for SkMatrix44 on some platforms.
Original author whunt@chromium.org.
https://codereview.appspot.com/7058077/



git-svn-id: http://skia.googlecode.com/svn/trunk@7241 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-17 12:17:00 +00:00
reed@google.com
edb7713cd5 mark default constructor for SkMatrix44 as deprecated, since it calls setIdentity()
and we have explicit (enum-based) constructors to distinguish that from uninitialized.



git-svn-id: http://skia.googlecode.com/svn/trunk@7228 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-16 16:28:58 +00:00
reed@google.com
d53025364a To support alignment pragmas (for speed), we need to relax assumptions about
our sizeof. So rewrite operator= and copy-constructor to just copy individual
fields.
Review URL: https://codereview.appspot.com/7098063

git-svn-id: http://skia.googlecode.com/svn/trunk@7181 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-15 14:54:00 +00:00
vollick@chromium.org
57a54e33cf Add SkMatrix44 constructor that allows user to control the initialization
method.  Preliminary results using Chromium's cc_perftests
show that we can avoid almost half of the default constructors from
redundantly/unnecessarily initializing the matrix to identity.

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

git-svn-id: http://skia.googlecode.com/svn/trunk@6742 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-10 20:16:10 +00:00
mike@reedtribe.org
f8b1ebc35b add helpers for isTranslate and isScaleTranslate
special-case determinant for isScaleTranslate



git-svn-id: http://skia.googlecode.com/svn/trunk@6725 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-10 03:27:47 +00:00
skia.committer@gmail.com
0264fb4543 Sanitizing source files in Skia_Periodic_House_Keeping
git-svn-id: http://skia.googlecode.com/svn/trunk@6687 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-06 02:01:25 +00:00
reed@google.com
99b5c7f94b optimize translate and scale
add map2() to optimize for mapping an array of 2D points into homogeneous 4-vector
Review URL: https://codereview.appspot.com/6874064

git-svn-id: http://skia.googlecode.com/svn/trunk@6685 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-05 22:13:59 +00:00
skia.committer@gmail.com
e659c2e820 Sanitizing source files in Skia_Periodic_House_Keeping
git-svn-id: http://skia.googlecode.com/svn/trunk@6660 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-04 02:01:25 +00:00
reed@google.com
7d68335eb4 add getTypes() to SkMatrix44, to cache how complex the matrix is.
add bench

optimize operator== by performing 4 compares in a row before checking
optimize setconcat by noting when we can write the answer directly into this

At least on this macbook, I had to mark helpers like isIdentity() as inline to get them inlined.
Review URL: https://codereview.appspot.com/6863053

git-svn-id: http://skia.googlecode.com/svn/trunk@6655 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-03 21:19:52 +00:00
jamesr@chromium.org
deb4c16969 Keep track of identity SkMatrix44s
This keeps a bool on SkMatrix44 indicating if we know for sure that the matrix
is identity, similar to the TypeMask on SkMatrix. This is useful to early-out
of potentially expensive matrix math at the cost of some memory.
Review URL: https://codereview.appspot.com/6854113

git-svn-id: http://skia.googlecode.com/svn/trunk@6620 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-29 21:17:16 +00:00
skia.committer@gmail.com
ab38f7acb3 Sanitizing source files in Skia_Periodic_House_Keeping
git-svn-id: http://skia.googlecode.com/svn/trunk@6577 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-28 02:02:11 +00:00
reed@google.com
631940c8c4 don't use bit-wise test for equality when using floats.
git-svn-id: http://skia.googlecode.com/svn/trunk@6557 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-27 13:13:22 +00:00
vollick@chromium.org
f11cf9ff88 Add SkMatrix44::setColMajord, etc.
We have accessors for efficiently getting the matirx data, and it would be nice
if we had similar methods for setting the matrix entries.

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

git-svn-id: http://skia.googlecode.com/svn/trunk@6494 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-19 21:02:06 +00:00
vollick@chromium.org
9b21c25e74 Add SkMatrix44::setTranspose
It turned out that adding getDouble(...) and setDouble(...) made this change
easier, so I've included that in this cl as well.

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

git-svn-id: http://skia.googlecode.com/svn/trunk@6424 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-14 21:33:55 +00:00
vollick@chromium.org
5596a69e9f Add support for SK_MSCALAR_IS_FLOAT
The default is SK_MSCALAR_IS_FLOAT. You'll have to explicitly define SK_MSCALAR_IS_DOUBLE if that's what you want.

BUG=None

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

git-svn-id: http://skia.googlecode.com/svn/trunk@6403 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-13 20:12:00 +00:00
vollick@chromium.org
3959a76ab0 Changing the visibility of SkMatrix44::determinant().
Review URL: https://codereview.appspot.com/6819080

git-svn-id: http://skia.googlecode.com/svn/trunk@6395 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-13 15:08:22 +00:00
reed@google.com
dd31131021 add const to src parameter for mapMScalars()
git-svn-id: http://skia.googlecode.com/svn/trunk@6386 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-12 20:43:59 +00:00
reed@google.com
1ea95be560 add explicit mapScalars and mapMScalars entry-points, instead of just map()
git-svn-id: http://skia.googlecode.com/svn/trunk@6373 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-09 21:39:48 +00:00
reed@google.com
20d44677a1 simplify macros, since we no longer support scalar == fixed
git-svn-id: http://skia.googlecode.com/svn/trunk@6372 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-09 21:28:55 +00:00
bsalomon@google.com
72e49b8982 warning fixes
Review URL http://codereview.appspot.com/5328050/




git-svn-id: http://skia.googlecode.com/svn/trunk@2548 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-10-27 21:47:03 +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
65d8bb096a add SK_API to SkMatrix44
git-svn-id: http://skia.googlecode.com/svn/trunk@1794 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-05 19:12:59 +00:00
reed@google.com
da9fac0aa1 add row/col major getters, plus unit-tests
git-svn-id: http://skia.googlecode.com/svn/trunk@1564 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-13 14:46:52 +00:00
reed@google.com
8260a89586 move into utils
git-svn-id: http://skia.googlecode.com/svn/trunk@1563 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-13 14:02:52 +00:00