summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
Diffstat (limited to 'svx')
-rw-r--r--svx/source/tbxctrls/SvxColorValueSet.cxx110
1 files changed, 106 insertions, 4 deletions
diff --git a/svx/source/tbxctrls/SvxColorValueSet.cxx b/svx/source/tbxctrls/SvxColorValueSet.cxx
index b2ada21150e3..dc2f2c23d89e 100644
--- a/svx/source/tbxctrls/SvxColorValueSet.cxx
+++ b/svx/source/tbxctrls/SvxColorValueSet.cxx
@@ -24,6 +24,83 @@
#include <vcl/settings.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;
+ }
+
+ while(index < rStr.getLength() &&
+ (rStr[index] == ' ' || rStr[index] == '\n' || rStr[index] == '\t'))
+ ++index;
+ if(index == rStr.getLength())
+ index = -1;
+
+ return rStr.copy(substart, toklen);
+}
+
+Palette::Palette(const OUString &rFname)
+{
+ // TODO add error handling!!!
+ SvFileStream aFile(rFname, STREAM_READ);
+
+ OString aPaletteName;
+ OString aLine;
+
+ aFile.ReadLine(aLine);
+ if( !aLine.startsWith("GIMP Palette") ) return;
+ aFile.ReadLine(aLine);
+ if( aLine.startsWith("Name: ", &aPaletteName) )
+ {
+ aFile.ReadLine(aLine);
+ if( aLine.startsWith("Columns: "))
+ aFile.ReadLine(aLine); // we can ignore this
+ }
+
+ do {
+ if (aLine[0] != '#' && aLine[0] != '\n')
+ {
+ // TODO check if r,g,b are 0<= x <=255, or just clamp?
+ sal_Int32 nIndex = 0;
+ OString token;
+
+ token = lcl_getToken(aLine, nIndex);
+ if(token == "" || nIndex == -1) continue;
+ sal_Int32 r = token.toInt32();
+
+ token = lcl_getToken(aLine, nIndex);
+ if(token == "" || nIndex == -1) continue;
+ sal_Int32 g = token.toInt32();
+
+ token = lcl_getToken(aLine, nIndex);
+ if(token == "") continue;
+ sal_Int32 b = token.toInt32();
+
+ OString name;
+ if(nIndex != -1)
+ name = aLine.copy(nIndex);
+
+ maColors.push_back(std::make_pair(Color(r, g, b), name));
+ }
+ } while (aFile.ReadLine(aLine));
+}
SvxColorValueSet::SvxColorValueSet(Window* _pParent, WinBits nWinStyle)
: ValueSet(_pParent, nWinStyle)
@@ -88,12 +165,37 @@ void SvxColorValueSet::addEntriesForXColorList(const XColorList& rXColorList, sa
}
}
-void SvxColorValueSet::addEntriesForColorVector(const std::vector<Color>& rColorVector, sal_uInt32 nStartIndex)
+void SvxColorValueSet::loadColorVector(const std::vector<Color>& rColorVector, const OUString& rNamePrefix, sal_uInt32 nStartIndex)
+{
+ if(rNamePrefix.getLength() != 0)
+ {
+ for(std::vector<Color>::const_iterator it = rColorVector.begin();
+ it != rColorVector.end(); it++, nStartIndex++)
+ {
+ InsertItem(nStartIndex, *it, rNamePrefix + OUString::number(nStartIndex));
+ }
+ }
+ else
+ {
+ for(std::vector<Color>::const_iterator it = rColorVector.begin();
+ it != rColorVector.end(); it++, nStartIndex++)
+ {
+ InsertItem(nStartIndex, *it, "");
+ }
+ }
+}
+
+
+void SvxColorValueSet::loadPalette(const Palette& rPalette)
{
- for(std::vector<Color>::const_iterator it = rColorVector.begin();
- it != rColorVector.end(); it++, nStartIndex++)
+ const Palette::ColorList &rColors = rPalette.maColors;
+ Clear();
+ int nIx = 1;
+ for(Palette::ColorList::const_iterator it = rColors.begin();
+ it != rColors.end(); ++it)
{
- InsertItem(nStartIndex, *it, "");
+ InsertItem(nIx, it->first, OStringToOUString(it->second, RTL_TEXTENCODING_ASCII_US));
+ ++nIx;
}
}