Commit 7fd214e8 authored by Johan Dahlin's avatar Johan Dahlin

[cairo] Add a RadialGradient prototype

parent c974bfb5
......@@ -95,6 +95,7 @@ cairoNative_la_SOURCES = \
modules/cairo-pattern.c \
modules/cairo-gradient.c \
modules/cairo-linear-gradient.c \
modules/cairo-radial-gradient.c \
modules/cairo.c
......
......@@ -97,5 +97,9 @@ jsval gjs_cairo_gradient_create_proto(JSContext *context, JSObject *module,
jsval gjs_cairo_linear_gradient_create_proto(JSContext *context, JSObject *module,
const char *proto_name, JSObject *parent);
/* radial gradient */
jsval gjs_cairo_radial_gradient_create_proto(JSContext *context, JSObject *module,
const char *proto_name, JSObject *parent);
#endif /* __CAIRO_PRIVATE_H__ */
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
/* Copyright 2010 litl, LLC. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*/
#include <config.h>
#include <gjs/gjs.h>
#include <cairo.h>
#include "cairo-private.h"
GJS_DEFINE_PROTO("CairoRadialGradient", gjs_cairo_radial_gradient)
static JSBool
gjs_cairo_radial_gradient_constructor(JSContext *context,
JSObject *obj,
uintN argc,
jsval *argv,
jsval *retval)
{
double cx0, cy0, radius0, cx1, cy1, radius1;
cairo_pattern_t *pattern;
cairo_status_t status;
if (!gjs_check_constructing(context))
return JS_FALSE;
if (!gjs_parse_args(context, "RadialGradient", "ffffff", argc, argv,
"cx0", &cx0,
"cy0", &cy0,
"radius0", &radius0,
"cx1", &cx1,
"cy1", &cy1,
"radius1", &radius1))
return JS_FALSE;
pattern = cairo_pattern_create_radial(cx0, cy0, radius0, cx1, cy1, radius1);
status = cairo_pattern_status(pattern);
if (status != CAIRO_STATUS_SUCCESS) {
gjs_throw(context, "Failed to create cairo pattern: %s",
cairo_status_to_string(status));
return JS_FALSE;
}
gjs_cairo_pattern_construct(context, obj, pattern);
return JS_TRUE;
}
static void
gjs_cairo_radial_gradient_finalize(JSContext *context,
JSObject *obj)
{
gjs_cairo_pattern_finalize_pattern(context, obj);
}
static JSPropertySpec gjs_cairo_radial_gradient_proto_props[] = {
{ NULL }
};
static JSFunctionSpec gjs_cairo_radial_gradient_proto_funcs[] = {
// getRadialCircles
{ NULL }
};
......@@ -90,6 +90,11 @@ gjs_js_define_cairo_stuff(JSContext *context,
if (obj == JSVAL_NULL)
return JS_FALSE;
obj = gjs_cairo_radial_gradient_create_proto(context, module_obj,
"RadialGradient", gradient_proto);
if (obj == JSVAL_NULL)
return JS_FALSE;
return JS_TRUE;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment