Kaydet (Commit) 350c4f9a authored tarafından Tsutomu Uchino's avatar Tsutomu Uchino

#i98734# store and load ScaleMode property of image control on dialogs

Suggested by: Frank Schönheit <frank.schoenheit@gmx.de>
üst 1c1efea3
......@@ -217,7 +217,7 @@ ImplPropertyInfo* ImplGetPropertyInfos( sal_uInt16& rElementCount )
DECL_PROP_2 ( "AutoRepeat", AUTO_REPEAT, sal_Bool, BOUND, MAYBEDEFAULT ),
DECL_PROP_2 ( "RepeatDelay", REPEAT_DELAY, sal_Int32, BOUND, MAYBEDEFAULT ),
DECL_PROP_2 ( "ScaleImage", SCALEIMAGE, bool, BOUND, MAYBEDEFAULT ),
DECL_PROP_2 ( "ScaleMode", IMAGE_SCALE_MODE, sal_Int16, BOUND, MAYBEDEFAULT ),
DECL_DEP_PROP_2 ( "ScaleMode", IMAGE_SCALE_MODE, sal_Int16, BOUND, MAYBEDEFAULT ),
DECL_DEP_PROP_3 ( "ScrollValue", SCROLLVALUE, sal_Int32, BOUND, MAYBEDEFAULT, MAYBEVOID ),
DECL_PROP_2 ( "ScrollValueMax", SCROLLVALUE_MAX, sal_Int32, BOUND, MAYBEDEFAULT ),
DECL_PROP_2 ( "ScrollValueMin", SCROLLVALUE_MIN, sal_Int32, BOUND, MAYBEDEFAULT ),
......
......@@ -247,6 +247,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
>
......
......@@ -153,6 +153,8 @@ public:
::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName );
void readSelectionTypeAttr(
::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName );
void readImageScaleModeAttr(
::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName );
//
inline void addBoolAttr(
::rtl::OUString const & rAttrName, sal_Bool bValue )
......
......@@ -447,6 +447,9 @@ public:
bool importSelectionTypeProperty(
::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName,
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 );
};
//==============================================================================
......
......@@ -591,6 +591,8 @@ void ElementDescriptor::readImageControlModel( StyleBag * all_styles )
readDefaults();
readBoolAttr( OUString( RTL_CONSTASCII_USTRINGPARAM("ScaleImage") ),
OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_DIALOGS_PREFIX ":scale-image") ) );
readImageScaleModeAttr( OUString( RTL_CONSTASCII_USTRINGPARAM("ScaleMode") ),
OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_DIALOGS_PREFIX ":scale-mode") ) );
readStringAttr( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ),
OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_DIALOGS_PREFIX ":src") ) );
readBoolAttr( OUString( RTL_CONSTASCII_USTRINGPARAM("Tabstop") ),
......
......@@ -38,6 +38,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>
......@@ -968,6 +969,36 @@ void ElementDescriptor::readSelectionTypeAttr( OUString const & rPropName, OUStr
}
}
//__________________________________________________________________________________________________
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( RTL_CONSTASCII_USTRINGPARAM("none") ) );
break;
case ::awt::ImageScaleMode::ISOTROPIC:
addAttribute( rAttrName, OUString( RTL_CONSTASCII_USTRINGPARAM("isotropic") ) );
break;
case ::awt::ImageScaleMode::ANISOTROPIC:
addAttribute( rAttrName, OUString( RTL_CONSTASCII_USTRINGPARAM("anisotropic") ) );
break;
default:
OSL_ENSURE( 0, "### illegal image scale mode value.");
break;
}
}
}
}
//__________________________________________________________________________________________________
void ElementDescriptor::readDefaults( bool supportPrintable, bool supportVisible )
{
Any a( _xProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("Name") ) ) );
......
......@@ -999,6 +999,9 @@ void ImageControlElement::endElement()
ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ScaleImage") ),
OUString( RTL_CONSTASCII_USTRINGPARAM("scale-image") ),
_xAttributes );
ctx.importImageScaleModeProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ScaleMode") ),
OUString( RTL_CONSTASCII_USTRINGPARAM("scale-mode") ),
_xAttributes );
ctx.importStringProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("ImageURL") ),
OUString( RTL_CONSTASCII_USTRINGPARAM("src") ),
_xAttributes );
......
......@@ -44,6 +44,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>
......@@ -1339,6 +1340,43 @@ 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.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("none") ))
{
nImageScaleMode = awt::ImageScaleMode::NONE;
}
else if (aImageScaleMode.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("isotropic") ))
{
nImageScaleMode = awt::ImageScaleMode::ISOTROPIC;
}
else if (aImageScaleMode.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("anisotropic") ))
{
nImageScaleMode = awt::ImageScaleMode::ANISOTROPIC;
}
else
{
throw xml::sax::SAXException(
OUString( RTL_CONSTASCII_USTRINGPARAM("invalid scale image mode value!") ),
Reference< XInterface >(), Any() );
}
_xControlModel->setPropertyValue( rPropName, makeAny( nImageScaleMode ) );
return true;
}
return false;
}
//==================================================================================================
struct StringTriple
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment