summaryrefslogtreecommitdiff
path: root/oox/source/xls/stylesbuffer.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'oox/source/xls/stylesbuffer.cxx')
-rw-r--r--oox/source/xls/stylesbuffer.cxx77
1 files changed, 47 insertions, 30 deletions
diff --git a/oox/source/xls/stylesbuffer.cxx b/oox/source/xls/stylesbuffer.cxx
index cd914ceae196..b9a11b5104ea 100644
--- a/oox/source/xls/stylesbuffer.cxx
+++ b/oox/source/xls/stylesbuffer.cxx
@@ -95,10 +95,6 @@ const sal_Int32 OOX_FONTFAMILY_MODERN = 3;
const sal_Int32 OOX_FONTFAMILY_SCRIPT = 4;
const sal_Int32 OOX_FONTFAMILY_DECORATIVE = 5;
-// OOX font charset (also used in BIFF)
-const sal_Int32 OOX_FONTCHARSET_UNUSED = -1;
-const sal_Int32 OOX_FONTCHARSET_ANSI = 0;
-
// OOX cell text direction (also used in BIFF)
const sal_Int32 OOX_XF_TEXTDIR_CONTEXT = 0;
const sal_Int32 OOX_XF_TEXTDIR_LTR = 1;
@@ -307,7 +303,27 @@ sal_Int32 lclReadRgbColor( BinaryInputStream& rStrm )
} // namespace
-// ----------------------------------------------------------------------------
+// ============================================================================
+
+ExcelGraphicHelper::ExcelGraphicHelper( const WorkbookHelper& rHelper ) :
+ GraphicHelper( rHelper.getGlobalFactory(), rHelper.getBaseFilter().getTargetFrame() ),
+ WorkbookHelper( rHelper )
+{
+}
+
+sal_Int32 ExcelGraphicHelper::getSchemeColor( sal_Int32 nToken ) const
+{
+ if( getFilterType() == FILTER_OOX )
+ return getTheme().getColorByToken( nToken );
+ return GraphicHelper::getSchemeColor( nToken );
+}
+
+sal_Int32 ExcelGraphicHelper::getPaletteColor( sal_Int32 nPaletteIdx ) const
+{
+ return getStyles().getPaletteColor( nPaletteIdx );
+}
+
+// ============================================================================
void Color::setAuto()
{
@@ -540,15 +556,15 @@ sal_Int32 ColorPalette::getColor( sal_Int32 nPaletteIdx ) const
{
case OOX_COLOR_WINDOWTEXT3:
case OOX_COLOR_WINDOWTEXT:
- case OOX_COLOR_CHWINDOWTEXT: nColor = getBaseFilter().getSystemColor( XML_windowText ); break;
+ case OOX_COLOR_CHWINDOWTEXT: nColor = getBaseFilter().getGraphicHelper().getSystemColor( XML_windowText ); break;
case OOX_COLOR_WINDOWBACK3:
case OOX_COLOR_WINDOWBACK:
- case OOX_COLOR_CHWINDOWBACK: nColor = getBaseFilter().getSystemColor( XML_window ); break;
- case OOX_COLOR_BUTTONBACK: nColor = getBaseFilter().getSystemColor( XML_btnFace ); break;
- case OOX_COLOR_CHBORDERAUTO: nColor = API_RGB_BLACK; /* really always black? */ break;
- case OOX_COLOR_NOTEBACK: nColor = getBaseFilter().getSystemColor( XML_infoBk ); break;
- case OOX_COLOR_NOTETEXT: nColor = getBaseFilter().getSystemColor( XML_infoText ); break;
- case OOX_COLOR_FONTAUTO: nColor = API_RGB_TRANSPARENT; break;
+ case OOX_COLOR_CHWINDOWBACK: nColor = getBaseFilter().getGraphicHelper().getSystemColor( XML_window ); break;
+ case OOX_COLOR_BUTTONBACK: nColor = getBaseFilter().getGraphicHelper().getSystemColor( XML_btnFace ); break;
+ case OOX_COLOR_CHBORDERAUTO: nColor = API_RGB_BLACK; /* really always black? */ break;
+ case OOX_COLOR_NOTEBACK: nColor = getBaseFilter().getGraphicHelper().getSystemColor( XML_infoBk ); break;
+ case OOX_COLOR_NOTETEXT: nColor = getBaseFilter().getGraphicHelper().getSystemColor( XML_infoText ); break;
+ case OOX_COLOR_FONTAUTO: nColor = API_RGB_TRANSPARENT; break;
default: OSL_ENSURE( false, "ColorPalette::getColor - unknown color index" );
}
return nColor;
@@ -573,7 +589,8 @@ void lclSetFontName( ApiScriptFontName& rFontName, const FontDescriptor& rFontDe
{
rFontName.maName = rFontDesc.Name;
rFontName.mnFamily = rFontDesc.Family;
- rFontName.mnCharSet = rFontDesc.CharSet;
+ // API font descriptor contains rtl_TextEncoding constants
+ rFontName.mnTextEnc = rFontDesc.CharSet;
}
else
{
@@ -588,7 +605,7 @@ void lclSetFontName( ApiScriptFontName& rFontName, const FontDescriptor& rFontDe
FontModel::FontModel() :
mnScheme( XML_none ),
mnFamily( OOX_FONTFAMILY_NONE ),
- mnCharSet( OOX_FONTCHARSET_ANSI ),
+ mnCharSet( WINDOWS_CHARSET_DEFAULT ),
mfHeight( 0.0 ),
mnUnderline( XML_none ),
mnEscapement( XML_baseline ),
@@ -656,7 +673,7 @@ ApiFontUsedFlags::ApiFontUsedFlags( bool bAllUsed ) :
ApiScriptFontName::ApiScriptFontName() :
mnFamily( ::com::sun::star::awt::FontFamily::DONTKNOW ),
- mnCharSet( RTL_TEXTENCODING_DONTKNOW )
+ mnTextEnc( RTL_TEXTENCODING_DONTKNOW )
{
}
@@ -978,13 +995,13 @@ void Font::finalizeImport()
case OOX_FONTFAMILY_DECORATIVE: maApiData.maDesc.Family = cssawt::FontFamily::DECORATIVE; break;
}
- // character set
- if( (0 <= maModel.mnCharSet) && (maModel.mnCharSet <= 255) )
+ // character set (API font descriptor uses rtl_TextEncoding in member CharSet!)
+ if( (0 <= maModel.mnCharSet) && (maModel.mnCharSet <= SAL_MAX_UINT8) )
maApiData.maDesc.CharSet = static_cast< sal_Int16 >(
rtl_getTextEncodingFromWindowsCharset( static_cast< sal_uInt8 >( maModel.mnCharSet ) ) );
// color, height, weight, slant, strikeout, outline, shadow
- maApiData.mnColor = maModel.maColor.getColor( getBaseFilter() );
+ maApiData.mnColor = maModel.maColor.getColor( getBaseFilter().getGraphicHelper() );
maApiData.maDesc.Height = static_cast< sal_Int16 >( maModel.mfHeight * 20.0 );
maApiData.maDesc.Weight = maModel.mbBold ? cssawt::FontWeight::BOLD : cssawt::FontWeight::NORMAL;
maApiData.maDesc.Slant = maModel.mbItalic ? cssawt::FontSlant_ITALIC : cssawt::FontSlant_NONE;
@@ -1085,19 +1102,19 @@ void Font::writeToPropertyMap( PropertyMap& rPropMap, FontPropertyType ePropType
{
rPropMap[ PROP_CharFontName ] <<= maApiData.maLatinFont.maName;
rPropMap[ PROP_CharFontFamily ] <<= maApiData.maLatinFont.mnFamily;
- rPropMap[ PROP_CharFontCharSet ] <<= maApiData.maLatinFont.mnCharSet;
+ rPropMap[ PROP_CharFontCharSet ] <<= maApiData.maLatinFont.mnTextEnc;
}
if( maApiData.maAsianFont.maName.getLength() > 0 )
{
rPropMap[ PROP_CharFontNameAsian ] <<= maApiData.maAsianFont.maName;
rPropMap[ PROP_CharFontFamilyAsian ] <<= maApiData.maAsianFont.mnFamily;
- rPropMap[ PROP_CharFontCharSetAsian ] <<= maApiData.maAsianFont.mnCharSet;
+ rPropMap[ PROP_CharFontCharSetAsian ] <<= maApiData.maAsianFont.mnTextEnc;
}
if( maApiData.maCmplxFont.maName.getLength() > 0 )
{
rPropMap[ PROP_CharFontNameComplex ] <<= maApiData.maCmplxFont.maName;
rPropMap[ PROP_CharFontFamilyComplex ] <<= maApiData.maCmplxFont.mnFamily;
- rPropMap[ PROP_CharFontCharSetComplex ] <<= maApiData.maCmplxFont.mnCharSet;
+ rPropMap[ PROP_CharFontCharSetComplex ] <<= maApiData.maCmplxFont.mnTextEnc;
}
}
// font height
@@ -1160,7 +1177,7 @@ void Font::importFontData2( BiffInputStream& rStrm )
maModel.setBiffHeight( nHeight );
maModel.mnFamily = OOX_FONTFAMILY_NONE;
- maModel.mnCharSet = OOX_FONTCHARSET_UNUSED; // ensure to not use font charset in byte string import
+ maModel.mnCharSet = -1; // ensure to not use font charset in byte string import
maModel.mnUnderline = getFlagValue( nFlags, BIFF_FONTFLAG_UNDERLINE, XML_single, XML_none );
maModel.mnEscapement = XML_none;
maModel.mbBold = getFlag( nFlags, BIFF_FONTFLAG_BOLD );
@@ -1771,7 +1788,7 @@ BorderLineModel* Border::getBorderLine( sal_Int32 nElement )
bool Border::convertBorderLine( BorderLine& rBorderLine, const BorderLineModel& rModel )
{
- rBorderLine.Color = rModel.maColor.getColor( getBaseFilter(), API_RGB_BLACK );
+ rBorderLine.Color = rModel.maColor.getColor( getBaseFilter().getGraphicHelper(), API_RGB_BLACK );
switch( rModel.mnStyle )
{
case XML_dashDot: lclSetBorderLineWidth( rBorderLine, API_LINE_THIN ); break;
@@ -2075,7 +2092,7 @@ void Fill::importCfRule( BiffInputStream& rStrm, sal_uInt32 nFlags )
void Fill::finalizeImport()
{
- const FilterBase& rFilter = getBaseFilter();
+ const GraphicHelper& rGraphicHelper = getBaseFilter().getGraphicHelper();
if( mxPatternModel.get() )
{
@@ -2127,16 +2144,16 @@ void Fill::finalizeImport()
case XML_solid: nAlpha = 0x80; break;
}
- sal_Int32 nWinTextColor = rFilter.getSystemColor( XML_windowText );
- sal_Int32 nWinColor = rFilter.getSystemColor( XML_window );
+ sal_Int32 nWinTextColor = rGraphicHelper.getSystemColor( XML_windowText );
+ sal_Int32 nWinColor = rGraphicHelper.getSystemColor( XML_window );
if( !rModel.mbPattColorUsed )
rModel.maPatternColor.setAuto();
- sal_Int32 nPattColor = rModel.maPatternColor.getColor( rFilter, nWinTextColor );
+ sal_Int32 nPattColor = rModel.maPatternColor.getColor( rGraphicHelper, nWinTextColor );
if( !rModel.mbFillColorUsed )
rModel.maFillColor.setAuto();
- sal_Int32 nFillColor = rModel.maFillColor.getColor( rFilter, nWinColor );
+ sal_Int32 nFillColor = rModel.maFillColor.getColor( rGraphicHelper, nWinColor );
maApiData.mnColor = lclGetMixedColor( nPattColor, nFillColor, nAlpha );
maApiData.mbTransparent = false;
@@ -2148,11 +2165,11 @@ void Fill::finalizeImport()
maApiData.mbUsed = true; // no support for differential attributes
GradientFillModel::ColorMap::const_iterator aIt = rModel.maColors.begin();
OSL_ENSURE( !aIt->second.isAuto(), "Fill::finalizeImport - automatic gradient color" );
- maApiData.mnColor = aIt->second.getColor( rFilter, API_RGB_WHITE );
+ maApiData.mnColor = aIt->second.getColor( rGraphicHelper, API_RGB_WHITE );
if( ++aIt != rModel.maColors.end() )
{
OSL_ENSURE( !aIt->second.isAuto(), "Fill::finalizeImport - automatic gradient color" );
- sal_Int32 nEndColor = aIt->second.getColor( rFilter, API_RGB_WHITE );
+ sal_Int32 nEndColor = aIt->second.getColor( rGraphicHelper, API_RGB_WHITE );
maApiData.mnColor = lclGetMixedColor( maApiData.mnColor, nEndColor, 0x40 );
maApiData.mbTransparent = false;
}