summaryrefslogtreecommitdiff
path: root/xmlscript
diff options
context:
space:
mode:
authorTsutomu Uchino <hanya@apache.org>2015-01-26 09:06:52 +0000
committerCaolán McNamara <caolanm@redhat.com>2015-01-27 10:46:43 +0000
commit41146013ad088e6539335454edffc0a394a1d24f (patch)
tree4a199009b5b977dcd43b253664be8e75cb1995e1 /xmlscript
parentdbf15c904425a4358b3c930ddff4c01982138ef6 (diff)
Resolves: #i98734# save/load ScaleMode property of image control on dialogs
Suggested by: Frank Schönheit <frank.schoenheit@gmx.de> (cherry picked from commit 350c4f9a01b88d4fd1006465151348ac5d459f1a) Conflicts: xmlscript/source/xmldlg_imexp/exp_share.hxx xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx xmlscript/source/xmldlg_imexp/xmldlg_export.cxx xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx xmlscript/source/xmldlg_imexp/xmldlg_import.cxx Change-Id: I2a11809112c0b1b53349f5b74dca20897d4a6acd
Diffstat (limited to 'xmlscript')
-rw-r--r--xmlscript/dtd/dialog.dtd1
-rw-r--r--xmlscript/source/xmldlg_imexp/exp_share.hxx2
-rw-r--r--xmlscript/source/xmldlg_imexp/imp_share.hxx3
-rw-r--r--xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx1
-rw-r--r--xmlscript/source/xmldlg_imexp/xmldlg_export.cxx31
-rw-r--r--xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx1
-rw-r--r--xmlscript/source/xmldlg_imexp/xmldlg_import.cxx37
7 files changed, 76 insertions, 0 deletions
diff --git a/xmlscript/dtd/dialog.dtd b/xmlscript/dtd/dialog.dtd
index 2360db0f8e6e..1f8e83db7c30 100644
--- a/xmlscript/dtd/dialog.dtd
+++ b/xmlscript/dtd/dialog.dtd
@@ -242,6 +242,7 @@
<!ATTLIST dlg:img %default-attributes;
dlg:src CDATA #IMPLIED
dlg:scale-image %boolean; #IMPLIED
+ dlg:scale-mode (none|isotropic|anisotropic); #IMPLIED
dlg:tabstop %boolean; #IMPLIED
>
diff --git a/xmlscript/source/xmldlg_imexp/exp_share.hxx b/xmlscript/source/xmldlg_imexp/exp_share.hxx
index f3104b3defb6..c67853ce6ffe 100644
--- a/xmlscript/source/xmldlg_imexp/exp_share.hxx
+++ b/xmlscript/source/xmldlg_imexp/exp_share.hxx
@@ -161,6 +161,8 @@ public:
OUString const & rPropName, OUString const & rAttrName );
void readSelectionTypeAttr(
OUString const & rPropName, OUString const & rAttrName );
+ void readImageScaleModeAttr(
+ OUString const & rPropName, OUString const & rAttrName );
void readDataAwareAttr(
OUString const & rAttrName );
inline void addBoolAttr(
diff --git a/xmlscript/source/xmldlg_imexp/imp_share.hxx b/xmlscript/source/xmldlg_imexp/imp_share.hxx
index 8db6fdc2a567..16ef33d24966 100644
--- a/xmlscript/source/xmldlg_imexp/imp_share.hxx
+++ b/xmlscript/source/xmldlg_imexp/imp_share.hxx
@@ -468,6 +468,9 @@ public:
bool importDataAwareProperty(
OUString const & rPropName,
css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
+ bool importImageScaleModeProperty(
+ ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
+ css::uno::Reference<css::xml::input::XAttributes> const & xAttributes );
};
class ControlImportContext : public ImportContext
diff --git a/xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx b/xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx
index db43d540f5aa..066cfd3a5b7b 100644
--- a/xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx
+++ b/xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx
@@ -589,6 +589,7 @@ void ElementDescriptor::readImageControlModel( StyleBag * all_styles )
// collect elements
readDefaults();
readBoolAttr( "ScaleImage", XMLNS_DIALOGS_PREFIX ":scale-image" );
+ readImageScaleModeAttr( "ScaleMode", XMLNS_DIALOGS_PREFIX ":scale-mode" );
readBoolAttr( "Tabstop", XMLNS_DIALOGS_PREFIX ":tabstop" );
readImageURLAttr( "ImageURL", XMLNS_DIALOGS_PREFIX ":src" );
readEvents();
diff --git a/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx b/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx
index f66bbfcd8ea8..e45ce96589b7 100644
--- a/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx
+++ b/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx
@@ -32,6 +32,7 @@
#include <com/sun/star/awt/FontWeight.hpp>
#include <com/sun/star/awt/FontWidth.hpp>
#include <com/sun/star/awt/ImagePosition.hpp>
+#include <com/sun/star/awt/ImageScaleMode.hpp>
#include <com/sun/star/awt/LineEndFormat.hpp>
#include <com/sun/star/awt/PushButtonType.hpp>
#include <com/sun/star/awt/VisualEffect.hpp>
@@ -1010,6 +1011,36 @@ void ElementDescriptor::readScrollableSettings()
XMLNS_DIALOGS_PREFIX ":vscroll" );
}
+void ElementDescriptor::readImageScaleModeAttr( OUString const & rPropName, OUString const & rAttrName )
+{
+ if (beans::PropertyState_DEFAULT_VALUE != _xPropState->getPropertyState( rPropName ))
+ {
+ Any aImageScaleMode( _xProps->getPropertyValue( rPropName ) );
+
+ if (aImageScaleMode.getValueTypeClass() == TypeClass_SHORT)
+ {
+ sal_Int16 nImageScaleMode;
+ aImageScaleMode >>= nImageScaleMode;
+
+ switch(nImageScaleMode)
+ {
+ case ::awt::ImageScaleMode::NONE:
+ addAttribute( rAttrName, OUString( "none") );
+ break;
+ case ::awt::ImageScaleMode::ISOTROPIC:
+ addAttribute( rAttrName, OUString( "isotropic") );
+ break;
+ case ::awt::ImageScaleMode::ANISOTROPIC:
+ addAttribute( rAttrName, OUString( "anisotropic" ) );
+ break;
+ default:
+ OSL_ENSURE( 0, "### illegal image scale mode value.");
+ break;
+ }
+ }
+ }
+}
+
void ElementDescriptor::readDefaults( bool supportPrintable, bool supportVisible )
{
Any a( _xProps->getPropertyValue( "Name" ) );
diff --git a/xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx b/xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx
index 17b4026fac62..30ceb9045887 100644
--- a/xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx
+++ b/xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx
@@ -910,6 +910,7 @@ void ImageControlElement::endElement()
ctx.importDefaults( _nBasePosX, _nBasePosY, _xAttributes );
ctx.importBooleanProperty( "ScaleImage", "scale-image", _xAttributes );
+ ctx.importImageScaleModeProperty( "ScaleMode" , "scale-mode" , _xAttributes );
Reference< document::XStorageBasedDocument > xDocStorage( _pImport->getDocOwner(), UNO_QUERY );
ctx.importImageURLProperty( "ImageURL" , "src" , _xAttributes );
diff --git a/xmlscript/source/xmldlg_imexp/xmldlg_import.cxx b/xmlscript/source/xmldlg_imexp/xmldlg_import.cxx
index 9b1ccf46809c..df0b15507fe4 100644
--- a/xmlscript/source/xmldlg_imexp/xmldlg_import.cxx
+++ b/xmlscript/source/xmldlg_imexp/xmldlg_import.cxx
@@ -30,6 +30,7 @@
#include <com/sun/star/awt/FontWeight.hpp>
#include <com/sun/star/awt/FontWidth.hpp>
#include <com/sun/star/awt/ImagePosition.hpp>
+#include <com/sun/star/awt/ImageScaleMode.hpp>
#include <com/sun/star/awt/LineEndFormat.hpp>
#include <com/sun/star/awt/PushButtonType.hpp>
#include <com/sun/star/awt/VisualEffect.hpp>
@@ -1363,6 +1364,42 @@ bool ImportContext::importSelectionTypeProperty(
return false;
}
+bool ImportContext::importImageScaleModeProperty(
+ OUString const & rPropName, OUString const & rAttrName,
+ Reference< xml::input::XAttributes > const & xAttributes )
+{
+ OUString aImageScaleMode(
+ xAttributes->getValueByUidName(
+ _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
+ if (!aImageScaleMode.isEmpty())
+ {
+ sal_Int16 nImageScaleMode;
+
+ if (aImageScaleMode == "none")
+ {
+ nImageScaleMode = awt::ImageScaleMode::NONE;
+ }
+ else if (aImageScaleMode == "isotropic")
+ {
+ nImageScaleMode = awt::ImageScaleMode::ISOTROPIC;
+ }
+ else if (aImageScaleMode == "anisotropic")
+ {
+ nImageScaleMode = awt::ImageScaleMode::ANISOTROPIC;
+ }
+ else
+ {
+ throw xml::sax::SAXException(
+ OUString( "invalid scale image mode value!" ),
+ Reference< XInterface >(), Any() );
+ }
+
+ _xControlModel->setPropertyValue( rPropName, makeAny( nImageScaleMode ) );
+ return true;
+ }
+ return false;
+}
+
struct StringTriple
{
char const * first;