diff options
author | nyamatongwe <devnull@localhost> | 2006-02-23 02:31:25 +0000 |
---|---|---|
committer | nyamatongwe <devnull@localhost> | 2006-02-23 02:31:25 +0000 |
commit | 89cb4070bf10f7143df9a40aed89693b029f7e2e (patch) | |
tree | 6169e042aa49317249f439aaada082a5976e8cb0 /win32/PlatWin.cxx | |
parent | e25bffcb73bd4d598b64f191cb9a33dce9f533b7 (diff) | |
download | scintilla-mirror-89cb4070bf10f7143df9a40aed89693b029f7e2e.tar.gz |
Made number of colours in a palette dynamic so that large numbers of
colours will work.
Diffstat (limited to 'win32/PlatWin.cxx')
-rw-r--r-- | win32/PlatWin.cxx | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx index 4ad7e5cab..f9b05fce6 100644 --- a/win32/PlatWin.cxx +++ b/win32/PlatWin.cxx @@ -85,10 +85,14 @@ Palette::Palette() { used = 0; allowRealization = false; hpal = 0; + size = 100; + entries = new ColourPair[size]; } Palette::~Palette() { Release(); + delete []entries; + entries = 0; } void Palette::Release() { @@ -96,6 +100,9 @@ void Palette::Release() { if (hpal) ::DeleteObject(hpal); hpal = 0; + delete []entries; + size = 100; + entries = new ColourPair[size]; } /** @@ -110,11 +117,20 @@ void Palette::WantFind(ColourPair &cp, bool want) { return; } - if (used < numEntries) { - entries[used].desired = cp.desired; - entries[used].allocated.Set(cp.desired.AsLong()); - used++; + if (used >= size) { + int sizeNew = size * 2; + ColourPair *entriesNew = new ColourPair[sizeNew]; + for (int j=0; j<size; j++) { + entriesNew[j] = entries[j]; + } + delete []entries; + entries = entriesNew; + size = sizeNew; } + + entries[used].desired = cp.desired; + entries[used].allocated.Set(cp.desired.AsLong()); + used++; } else { for (int i=0; i < used; i++) { if (entries[i].desired == cp.desired) { |