History log of /haiku/headers/os/interface/AffineTransform.h
Revision Date Author Comments
# 86dfe1d9 21-Feb-2019 Augustin Cavalier <waddlesplash@gmail.com>

BAffineTransform: Remove "register" storage class.

Long since deprecated, and compilers can figure this out on
their own now. Fixes a lot of errors in Clang.


# 4721524c 10-Nov-2015 Julian Harnath <julian.harnath@rwth-aachen.de>

BAffineTransform: add PreTranslate/PreScale/PreRotate

* The existing methods TranslateBy(), ScaleBy() and RotateBy()
transform the transformation. For a transform A, a point p,
and the temporary transform B (being applied by the methods),
this results in p' = B*(A*p) = (B*A)*p
This is not necessarily the desired result. Suppose A is a
translation and B a rotation, added by RotateBy(). Then B*A
means that the translation itself is rotated, so B moves the
coordinate origin itself, by rotating it around the original
origin of the coordinate system (top left view corner).

If we want to translate and then rotate around that *new* origin,
we need to multiply the transforms the other way around: A*B.

Three new methods PreTranslateBy(), PreScaleBy() and PreRotateBy()
implement this. They are later used as a base to add translatation/
scaling/rotation methods to BView which behave in the expected
ordering, similar to other graphic APIs.


# 08135223 09-Nov-2015 Julian Harnath <julian.harnath@rwth-aachen.de>

Affine transforms: add method to test for dilation

* Add IsDilation() to BAffineTransform and Transformable which check
whether the transform is a dilation, i.e. consists of only
translation and/or scaling


# b8c44b4c 07-Feb-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

BAffineTransform: C++11 compatibility fix

inline const floats are a gcc extension. It is possible to do it in a
standard way in C++11 using constexpr, but then gcc will reject the
previously accepted nonstandard syntax.


# d7fcb36f 21-Apr-2010 Stephan Aßmus <superstippi@gmx.de>

* Allow to set the scale (versus multiplication with a scale).
* Added commented versions for translation, rotation and shear, which would
work similar.
* Added B_AFFINE_IDENTITY_TRANSFORM constant similar to B_ORIGIN.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36401 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2789b391 26-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

Rewrote BAffineTransform to not be based on agg::trans_affine, which was pulling
in the AGG header. Reused the AGG code were applicable and implemented a lot
more features. The Multiply and PreMultiply meaning is reversed with respect to
AGG, but follows the mathematical meaning. Added type_code
B_AFFINE_TRANSFORM_TYPE to TypeConstants.h and let BAffineTransform derive from
BFlattenable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35958 a95241bf-73f2-0310-859d-f6bbb57e9c96


# abb02bc4 26-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

Moved BAffineTransform from shared kit into interface kit. Still in BPrivate
namespace. Applied 80 char/line limit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35955 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b8c44b4c3f6a353b8f870cd1e8eb2b1b6f997780 07-Feb-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

BAffineTransform: C++11 compatibility fix

inline const floats are a gcc extension. It is possible to do it in a
standard way in C++11 using constexpr, but then gcc will reject the
previously accepted nonstandard syntax.


# d7fcb36f2b947d5ae487e7191c0a3021bbbbdc23 21-Apr-2010 Stephan Aßmus <superstippi@gmx.de>

* Allow to set the scale (versus multiplication with a scale).
* Added commented versions for translation, rotation and shear, which would
work similar.
* Added B_AFFINE_IDENTITY_TRANSFORM constant similar to B_ORIGIN.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36401 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2789b3911a0cd0dd188fd7abd4144a5f5d86e9a6 26-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

Rewrote BAffineTransform to not be based on agg::trans_affine, which was pulling
in the AGG header. Reused the AGG code were applicable and implemented a lot
more features. The Multiply and PreMultiply meaning is reversed with respect to
AGG, but follows the mathematical meaning. Added type_code
B_AFFINE_TRANSFORM_TYPE to TypeConstants.h and let BAffineTransform derive from
BFlattenable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35958 a95241bf-73f2-0310-859d-f6bbb57e9c96


# abb02bc4a40395682a9dd4ad13361653412d82f7 26-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

Moved BAffineTransform from shared kit into interface kit. Still in BPrivate
namespace. Applied 80 char/line limit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35955 a95241bf-73f2-0310-859d-f6bbb57e9c96