From ddeb6f3566e332a71d2151d101443e58369edd7d Mon Sep 17 00:00:00 2001 From: Tj Holowaychuk Date: Tue, 23 Nov 2010 16:20:23 -0800 Subject: [PATCH] Added rgba_to_string() --- src/CanvasRenderingContext2d.cc | 2 +- src/color.cc | 23 +++++++++++++++++++++++ src/color.h | 3 +++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/CanvasRenderingContext2d.cc b/src/CanvasRenderingContext2d.cc index 156e381..cedcfac 100644 --- a/src/CanvasRenderingContext2d.cc +++ b/src/CanvasRenderingContext2d.cc @@ -1010,7 +1010,7 @@ Context2d::SetShadowColor(Local prop, Local val, const AccessorIn Handle Context2d::GetShadowColor(Local prop, const AccessorInfo &info) { Context2d *context = ObjectWrap::Unwrap(info.This()); - return Null(); + return String::New(rgba_to_string(context->state->shadow)); } /* diff --git a/src/color.cc b/src/color.cc index 3536fcc..4341d78 100644 --- a/src/color.cc +++ b/src/color.cc @@ -6,6 +6,7 @@ // #include "color.h" +#include /* * Consume whitespace. @@ -234,6 +235,28 @@ rgba_create(uint32_t rgba) { return color; } +/* + * Return a string representation of the color. + */ + +char * +rgba_to_string(rgba_t rgba) { + char *buf = (char *) malloc(64); + if (1 == rgba.a) { + sprintf(buf, "#%.2X%.2X%.2X" + , (int) (rgba.r * 255) + , (int) (rgba.g * 255) + , (int) (rgba.b * 255)); + } else { + sprintf(buf, "rgba(%d, %d, %d, %.2f)" + , (int) (rgba.r * 255) + , (int) (rgba.g * 255) + , (int) (rgba.b * 255) + , rgba.a); + } + return buf; +} + /* * Return rgba from (r,g,b,a). */ diff --git a/src/color.h b/src/color.h index 4f7a0a6..4119316 100644 --- a/src/color.h +++ b/src/color.h @@ -30,6 +30,9 @@ rgba_create(uint32_t rgba); int32_t rgba_from_string(const char *str, short *ok); +char * +rgba_to_string(rgba_t rgba); + void rgba_inspect(int32_t rgba);