summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/pen.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/utils/asymptote/pen.h')
-rw-r--r--Build/source/utils/asymptote/pen.h19
1 files changed, 13 insertions, 6 deletions
diff --git a/Build/source/utils/asymptote/pen.h b/Build/source/utils/asymptote/pen.h
index d2894cc01dd..f89863951c1 100644
--- a/Build/source/utils/asymptote/pen.h
+++ b/Build/source/utils/asymptote/pen.h
@@ -86,6 +86,9 @@ extern const size_t ColorComponents[];
extern const char* ColorDeviceSuffix[];
extern const unsigned nColorSpace;
+enum LineCap {SquareCap,RoundCap,ExtendedCap};
+enum LineJoin {MiterJoin,RoundJoin,BevelJoin};
+
inline bool operator == (const vm::array& a, const vm::array& b)
{
size_t asize=a.size();
@@ -136,14 +139,18 @@ inline bool operator == (const Transparency& a, const Transparency& b) {
extern const char* BlendMode[];
extern const Int nBlendMode;
-const double bytescale=256.0*(1.0-DBL_EPSILON);
-
-// Map [0,1] to [0,255]
+// Map [0,1] to [0,255] uniformly, with 0.5 mapping to 128.
inline unsigned int byte(double r)
{
if(r < 0.0) r=0.0;
- else if(r > 1.0) r=1.0;
- return (int)(bytescale*r);
+ unsigned int c=(unsigned int)(r*256);
+ return c < 255 ? c : 255;
+}
+
+inline double byteinv(unsigned char i)
+{
+ if(i == 255) return 1.0;
+ return i/256.0;
}
class pen;
@@ -412,7 +419,7 @@ public:
font("<invalid>"), fontsize(-1.0), lineskip(-1.0), color(INVISIBLE),
r(0.0), g(0.0), b(0.0), grey(0.0),
pattern(DEFPAT), fillrule(DEFFILL), baseline(NOBASEALIGN),
- transparency(),linecap(-2), linejoin(-2), miterlimit(-1.0),
+ transparency("",-1.0),linecap(-2), linejoin(-2), miterlimit(-1.0),
overwrite(DEFWRITE), t(nullTransform) {}
double width() const {