Kaydet (Commit) cfdefe48 authored tarafından Krisztian Pinter's avatar Krisztian Pinter Kaydeden (comit) Tomaž Vajngerl

Add loading .soc palettes

Change-Id: Ie0d084a70d9b135658840bb7529f2099a702d280
üst d1d5c918
......@@ -19,16 +19,30 @@
#ifndef INCLUDED_SVX_PALETTE_HXX
#define INCLUDED_SVX_PALETTE_HXX
#include <svx/SvxColorValueSet.hxx>
#include <svx/xtable.hxx>
#include <rtl/ustring.hxx>
#include <tools/color.hxx>
#include <tools/stream.hxx>
typedef std::pair<Color, OString> NamedColor;
typedef std::vector< NamedColor > ColorList;
class Palette
{
public:
typedef std::pair<Color, OString> NamedColor;
typedef std::vector< NamedColor > ColorList;
private:
virtual ~Palette();
virtual const OUString& GetName() = 0;
virtual void LoadColorSet( SvxColorValueSet& rColorSet ) = 0;
virtual bool IsValid() = 0;
};
class PaletteGPL : public Palette
{
bool mbLoadedPalette;
bool mbValidPalette;
OUString maFName;
......@@ -40,12 +54,28 @@ private:
void LoadPaletteHeader();
void LoadPalette();
public:
Palette( const OUString &rFPath, const OUString &rFName );
PaletteGPL( const OUString &rFPath, const OUString &rFName );
virtual ~PaletteGPL();
virtual const OUString& GetName();
virtual void LoadColorSet( SvxColorValueSet& rColorSet );
virtual bool IsValid();
};
class PaletteSOC : public Palette
{
//TODO add lazy loading
OUString maName;
XColorListRef mpColorList;
public:
PaletteSOC( const OUString &rFPath, const OUString &rFName );
virtual ~PaletteSOC();
const OUString& GetName();
const ColorList& GetPaletteColors();
virtual const OUString& GetName();
virtual void LoadColorSet( SvxColorValueSet& rColorSet );
bool IsValid();
virtual bool IsValid();
};
#endif // INCLUDED_SVX_PALETTE_HXX
......
......@@ -20,6 +20,7 @@
#define INCLUDED_SVX_PALETTEMANAGER_HXX
#include <svx/SvxColorValueSet.hxx>
#include <svx/Palette.hxx>
#include <rtl/ustring.hxx>
#include <svx/tbxcolorupdate.hxx>
......@@ -32,9 +33,10 @@ class PaletteManager
svx::ToolboxButtonColorUpdater* mpBtnUpdater;
Color mLastColor;
std::vector<Palette> maPalettes;
std::vector<Palette*> maPalettes;
public:
PaletteManager();
~PaletteManager();
void LoadPalettes();
void ReloadColorSet(SvxColorValueSet& rColorSet);
std::vector<OUString> GetPaletteList();
......
......@@ -19,7 +19,6 @@
#ifndef INCLUDED_SVX_SVXCOLORVALUESET_HXX
#define INCLUDED_SVX_SVXCOLORVALUESET_HXX
#include <svx/Palette.hxx>
#include <svtools/valueset.hxx>
#include <svx/svxdllapi.h>
......@@ -41,7 +40,6 @@ public:
void addEntriesForXColorList(const XColorList& rXColorList, sal_uInt32 nStartIndex = 1);
void loadColorVector(const std::vector<Color>& rColorVector, const OUString& rNamePrefix, sal_uInt32 nStartIndex = 1);
void loadPalette(Palette& rPalette);
Size layoutAllVisible(sal_uInt32 nEntryCount);
Size layoutToGivenHeight(sal_uInt32 nHeight, sal_uInt32 nEntryCount);
};
......
......@@ -19,39 +19,16 @@
#include <svx/Palette.hxx>
// finds first token in rStr from index, separated by whitespace
// returns position of next token in index
OString lcl_getToken(const OString& rStr, sal_Int32& index)
{
sal_Int32 substart, toklen = 0;
while(index < rStr.getLength() &&
(rStr[index] == ' ' || rStr[index] == '\n' || rStr[index] == '\t'))
++index;
if(index == rStr.getLength())
{
index = -1;
return OString();
}
substart = index;
while(index < rStr.getLength() &&
!(rStr[index] == ' ' || rStr[index] == '\n' || rStr[index] == '\t'))
{
++index;
++toklen;
}
Palette::~Palette()
{
}
while(index < rStr.getLength() &&
(rStr[index] == ' ' || rStr[index] == '\n' || rStr[index] == '\t'))
++index;
if(index == rStr.getLength())
index = -1;
// PaletteGPL ------------------------------------------------------------------
return rStr.copy(substart, toklen);
}
OString lcl_getToken(const OString& rStr, sal_Int32& index);
Palette::Palette( const OUString &rFPath, const OUString &rFName ) :
PaletteGPL::PaletteGPL( const OUString &rFPath, const OUString &rFName ) :
mbLoadedPalette( false ),
mbValidPalette( false ),
maFName( rFName ),
......@@ -60,23 +37,36 @@ Palette::Palette( const OUString &rFPath, const OUString &rFName ) :
LoadPaletteHeader();
}
const OUString& Palette::GetName()
PaletteGPL::~PaletteGPL()
{
}
const OUString& PaletteGPL::GetName()
{
return maName;
}
const Palette::ColorList& Palette::GetPaletteColors()
void PaletteGPL::LoadColorSet( SvxColorValueSet& rColorSet )
{
LoadPalette();
return maColors;
rColorSet.Clear();
int nIx = 1;
for(ColorList::const_iterator it = maColors.begin();
it != maColors.end(); ++it)
{
// TODO make it->second OUString
rColorSet.InsertItem(nIx, it->first, OStringToOUString(it->second, RTL_TEXTENCODING_ASCII_US));
++nIx;
}
}
bool Palette::IsValid()
bool PaletteGPL::IsValid()
{
return mbValidPalette;
}
bool Palette::ReadPaletteHeader(SvFileStream& rFileStream)
bool PaletteGPL::ReadPaletteHeader(SvFileStream& rFileStream)
{
OString aLine;
OString aName;
......@@ -98,14 +88,13 @@ bool Palette::ReadPaletteHeader(SvFileStream& rFileStream)
return true;
}
//TODO make this LoadPaletteHeader and set a bool if palette is incorrect
void Palette::LoadPaletteHeader()
void PaletteGPL::LoadPaletteHeader()
{
SvFileStream aFile(maFPath, STREAM_READ);
mbValidPalette = ReadPaletteHeader( aFile );
}
void Palette::LoadPalette()
void PaletteGPL::LoadPalette()
{
if( mbLoadedPalette ) return;
mbLoadedPalette = true;
......@@ -145,4 +134,68 @@ void Palette::LoadPalette()
} while (aFile.ReadLine(aLine));
}
// finds first token in rStr from index, separated by whitespace
// returns position of next token in index
OString lcl_getToken(const OString& rStr, sal_Int32& index)
{
sal_Int32 substart, toklen = 0;
OUString aWhitespaceChars( " \n\t" );
while(index < rStr.getLength() &&
aWhitespaceChars.indexOf( rStr[index] ) != -1)
++index;
if(index == rStr.getLength())
{
index = -1;
return OString();
}
substart = index;
//counts length of token
while(index < rStr.getLength() &&
aWhitespaceChars.indexOf( rStr[index] ) == -1 )
{
++index;
++toklen;
}
//counts to position of next token
while(index < rStr.getLength() &&
aWhitespaceChars.indexOf( rStr[index] ) != -1 )
++index;
if(index == rStr.getLength())
index = -1;
return rStr.copy(substart, toklen);
}
// PaletteSOC ------------------------------------------------------------------
PaletteSOC::PaletteSOC( const OUString &rFPath, const OUString &rFName )
{
maName = rFName;
mpColorList = XPropertyList::AsColorList(XPropertyList::CreatePropertyListFromURL(XCOLOR_LIST, rFPath));
mpColorList->Load();
}
PaletteSOC::~PaletteSOC()
{
}
const OUString& PaletteSOC::GetName()
{
return maName;
}
void PaletteSOC::LoadColorSet( SvxColorValueSet& rColorSet )
{
rColorSet.Clear();
rColorSet.addEntriesForXColorList( *mpColorList );
}
bool PaletteSOC::IsValid()
{
return mpColorList.is();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -39,6 +39,16 @@ PaletteManager::PaletteManager() :
mnNumOfPalettes += maPalettes.size();
}
PaletteManager::~PaletteManager()
{
for( std::vector<Palette*>::iterator it = maPalettes.begin();
it != maPalettes.end();
++it)
{
delete *it;
}
}
void PaletteManager::LoadPalettes()
{
OUString aPalPath = SvtPathOptions().GetPalettePath();
......@@ -57,12 +67,14 @@ void PaletteManager::LoadPalettes()
if(aFileStat.isRegular() || aFileStat.isLink())
{
OUString aFName = aFileStat.getFileName();
Palette* pPalette = 0;
if( aFName.endsWithIgnoreAsciiCase(".gpl") )
{
Palette aPalette( aFileStat.getFileURL(), aFName );
if( aPalette.IsValid() )
maPalettes.push_back( aPalette );
}
pPalette = new PaletteGPL( aFileStat.getFileURL(), aFName );
else if( aFName.endsWithIgnoreAsciiCase(".soc") )
pPalette = new PaletteSOC( aFileStat.getFileURL(), aFName );
if( pPalette && pPalette->IsValid() )
maPalettes.push_back( pPalette );
}
}
}
......@@ -104,10 +116,8 @@ void PaletteManager::ReloadColorSet(SvxColorValueSet &rColorSet)
}
else
{
Palette& rPal = maPalettes[mnCurrentPalette-1];
mnColorCount = rPal.GetPaletteColors().size();
rColorSet.Clear();
rColorSet.loadPalette(rPal);
maPalettes[mnCurrentPalette-1]->LoadColorSet( rColorSet );
mnColorCount = rColorSet.GetItemCount();
}
}
......@@ -117,11 +127,11 @@ std::vector<OUString> PaletteManager::GetPaletteList()
aPaletteNames.push_back( STR_DEFAULT_PAL );
for( std::vector<Palette>::iterator it = maPalettes.begin();
for( std::vector<Palette*>::iterator it = maPalettes.begin();
it != maPalettes.end();
++it)
{
aPaletteNames.push_back( it->GetName() );
aPaletteNames.push_back( (*it)->GetName() );
}
aPaletteNames.push_back( STR_DOC_COLORS );
......@@ -151,7 +161,7 @@ OUString PaletteManager::GetPaletteName()
else if( mnCurrentPalette == mnNumOfPalettes - 1 )
return OUString( STR_DOC_COLORS );
else
return maPalettes[mnCurrentPalette - 1].GetName();
return maPalettes[mnCurrentPalette - 1]->GetName();
}
const Color& PaletteManager::GetLastColor()
......
......@@ -106,20 +106,6 @@ void SvxColorValueSet::loadColorVector(const std::vector<Color>& rColorVector, c
}
}
void SvxColorValueSet::loadPalette(Palette& rPalette)
{
const Palette::ColorList &rColors = rPalette.GetPaletteColors();
Clear();
int nIx = 1;
for(Palette::ColorList::const_iterator it = rColors.begin();
it != rColors.end(); ++it)
{
InsertItem(nIx, it->first, OStringToOUString(it->second, RTL_TEXTENCODING_ASCII_US));
++nIx;
}
}
Size SvxColorValueSet::layoutAllVisible(sal_uInt32 nEntryCount)
{
if(!nEntryCount)
......
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