diff options
author | Tomaž Vajngerl <quikee@gmail.com> | 2013-06-03 23:39:30 +0200 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2013-06-03 23:45:00 +0200 |
commit | 4d2a7692ef7d5cf733cb818b67be300968aa5689 (patch) | |
tree | b89d2d7dffbdcf5088f9c052382d0ebc5f27999a | |
parent | 870dd818999ac62c6722c208527d5fbf28c5daee (diff) |
fdo#34423 Allow to rotate raw uncompressed bitmaps.
When using a graphic filter like blur or sharpen, a raw uncompressed
bitmap is created. Until now it was not possible to rotate such bitmap
but now this is allowed.
Change-Id: I716fa46e37680b1111131586fad20da28391de14
-rw-r--r-- | include/vcl/GraphicNativeTransform.hxx | 5 | ||||
-rw-r--r-- | vcl/source/filter/GraphicNativeTransform.cxx | 21 |
2 files changed, 23 insertions, 3 deletions
diff --git a/include/vcl/GraphicNativeTransform.hxx b/include/vcl/GraphicNativeTransform.hxx index db727a22c5ff..4739e97cce26 100644 --- a/include/vcl/GraphicNativeTransform.hxx +++ b/include/vcl/GraphicNativeTransform.hxx @@ -26,8 +26,9 @@ class VCL_DLLPUBLIC GraphicNativeTransform { Graphic& mrGraphic; - bool rotateJPEG (sal_uInt16 aRotation); - bool rotateGeneric (sal_uInt16 aRotation, OUString aType); + bool rotateBitmapOnly (sal_uInt16 aRotation); + bool rotateJPEG (sal_uInt16 aRotation); + bool rotateGeneric (sal_uInt16 aRotation, OUString aType); public: GraphicNativeTransform(Graphic& rGraphic); diff --git a/vcl/source/filter/GraphicNativeTransform.cxx b/vcl/source/filter/GraphicNativeTransform.cxx index 7b3f64072afa..261ad90c3ce5 100644 --- a/vcl/source/filter/GraphicNativeTransform.cxx +++ b/vcl/source/filter/GraphicNativeTransform.cxx @@ -47,7 +47,8 @@ bool GraphicNativeTransform::canBeRotated() if ( aLink.GetType() == GFX_LINK_TYPE_NATIVE_JPG || aLink.GetType() == GFX_LINK_TYPE_NATIVE_PNG - || aLink.GetType() == GFX_LINK_TYPE_NATIVE_GIF) + || aLink.GetType() == GFX_LINK_TYPE_NATIVE_GIF + || aLink.GetType() == GFX_LINK_TYPE_NONE) { return true; } @@ -82,9 +83,27 @@ bool GraphicNativeTransform::rotate(sal_uInt16 aInputRotation) { return rotateGeneric(aRotation, OUString("gif")); } + else if ( aLink.GetType() == GFX_LINK_TYPE_NONE ) + { + return rotateBitmapOnly(aRotation); + } return false; } +bool GraphicNativeTransform::rotateBitmapOnly(sal_uInt16 aRotation) +{ + if (mrGraphic.IsAnimated()) + { + return false; + } + + BitmapEx aBitmap = mrGraphic.GetBitmapEx(); + aBitmap.Rotate(aRotation, COL_BLACK); + mrGraphic = aBitmap; + + return true; +} + bool GraphicNativeTransform::rotateGeneric(sal_uInt16 aRotation, OUString aType) { // Can't rotate animations yet |