Archive Browser
Download CorelDrawPalPaletteWriter.zip, last updated 05/08/2018 (30.38 KB)
Download- md5: 5dc2a39ffc96357d70d670fae102a69c
- sha1: 87cd30771c13132db0584ebbc03986265fa278dc
- sha256: 9cc4800ea9713c1d7f95660b1deba20f3c13e9f317171b2cbc0ff358ace10f7e
using System.Drawing;
using System.IO;
// Working with CorelDRAW Palettes part 2, writing .pal files
// https://www.cyotek.com/blog/working-with-coreldraw-palettes-part-2-writing-pal-files
// Copyright © 2018 Cyotek Ltd. All Rights Reserved.
// This work is licensed under the Creative Commons Attribution 4.0 International License.
// To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/.
// Found this example useful?
// https://www.paypal.me/cyotek
namespace Cyotek.Demonstrations.CorelDrawPaletteWriter
{
internal static class PaletteComparer
{
#region Static Methods
public static PaletteCompareResult Compare(string x, string y)
{
using (Stream source = File.OpenRead(x))
{
using (Stream dest = File.OpenRead(y))
{
return Compare(source, dest);
}
}
}
public static PaletteCompareResult Compare(Stream x, Stream y)
{
PaletteCompareResult result;
if (!AreFilesEqual(x, y))
{
y.Position = 0;
y.Position = 0;
result = !ArePalettesEqual(x, y) ? PaletteCompareResult.Mismatch : PaletteCompareResult.ColorMatch;
}
else
{
result = PaletteCompareResult.Match;
}
return result;
}
public static PaletteCompareResult Compare(CorelDrawPalette palette, string y)
{
PaletteCompareResult result;
using (Stream dest = File.OpenRead(y))
{
result = Compare(palette, dest);
}
return result;
}
public static PaletteCompareResult Compare(CorelDrawPalette palette, Stream y)
{
PaletteCompareResult result;
result = !ArePalettesEqual(palette, y) ? PaletteCompareResult.Mismatch : PaletteCompareResult.ColorMatch;
return result;
}
private static bool AreFilesEqual(Stream source, Stream dest)
{
bool result;
result = source.Length == dest.Length;
if (result)
{
byte[] sourceBuffer;
byte[] destBuffer;
int sourceRead;
int destRead;
int bufferSize;
bufferSize = 4096;
sourceBuffer = new byte[bufferSize];
destBuffer = new byte[bufferSize];
do
{
sourceRead = source.Read(sourceBuffer, 0, bufferSize);
destRead = dest.Read(destBuffer, 0, bufferSize);
if (sourceRead != destRead)
{
result = false;
}
else
{
for (int i = 0; i < sourceRead; i++)
{
if (sourceBuffer[i] != destBuffer[i])
{
result = false;
break;
}
}
}
} while ((sourceRead != 0 || destRead != 0) && result);
}
return result;
}
private static bool ArePalettesEqual(Stream x, Stream y)
{
CorelDrawPalette palette;
bool result;
palette = new CorelDrawPalette();
palette.Load(x);
result = ArePalettesEqual(palette, y);
return result;
}
private static bool ArePalettesEqual(CorelDrawPalette x, Stream y)
{
CorelDrawPalette destination;
bool result;
try
{
destination = new CorelDrawPalette();
destination.Load(y);
}
catch
{
destination = new CorelDrawPalette();
}
result = ArePalettesEqual(x, destination);
return result;
}
private static bool ArePalettesEqual(CorelDrawPalette x, CorelDrawPalette y)
{
bool result;
if (x.Count == y.Count)
{
result = true;
for (int i = 0; i < x.Count; i++)
{
Color cx;
Color cy;
cx = x[i];
cy = y[i];
if (cx.ToArgb() != cy.ToArgb())
{
result = false;
break;
}
}
}
else
{
result = false;
}
return result;
}
#endregion
}
}
Donate
This software may be used free of charge, but as with all free software there are costs involved to develop and maintain.
If this site or its services have saved you time, please consider a donation to help with running costs and timely updates.
Donate