-
Notifications
You must be signed in to change notification settings - Fork 0
/
ColorMap.cs
68 lines (61 loc) · 1.37 KB
/
ColorMap.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using System.Drawing;
using System.Reflection;
using System.CodeDom.Compiler;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using System.Collections.Specialized;
using System.Xml.Serialization;
using Microsoft.CSharp;
namespace Fractals
{
public class ColorMap
{
string code;
string compileError;
Color[] palette;
public string Code {
get {
return code;
}
set {
code = value;
try {
Type mainClass = Compiler.CompileClassBody(code);
MethodInfo methodMakeColors = mainClass.GetMethod("MakeColors");
if (methodMakeColors == null) {
throw new CompileException("Method not found");
}
FieldInfo cInfo = mainClass.GetField("c");
methodMakeColors.Invoke(null, null);
palette = (Color[])cInfo.GetValue(null);
} catch (CompileException e) {
compileError = e.ErrorMessage;
MessageBox.Show(compileError, "Can not compile equation");
}
}
}
[XmlIgnore]
public bool Compiles {
get {
return compileError == null;
}
}
[XmlIgnore]
public string CompileError {
get {
return compileError;
}
}
public ColorMap() {}
public ColorMap(string code)
{
this.Code = code;
}
public Color GetColorFromIndex(ColorIndex index)
{
return palette[index.Index];
}
}
}