LCOV - code coverage report
Current view: top level - modules - cairo-solid-pattern.cpp (source / functions) Coverage Total Hit
Test: gjs-1.88.0 Code Coverage Lines: 84.8 % 33 28
Test Date: 2026-06-07 00:56:06 Functions: 100.0 % 4 4
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 58.3 % 12 7

             Branch data     Line data    Source code
       1                 :             : /* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
       2                 :             : // SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
       3                 :             : // SPDX-FileCopyrightText: 2010 litl, LLC.
       4                 :             : 
       5                 :             : #include <config.h>
       6                 :             : 
       7                 :             : #include <cairo.h>
       8                 :             : 
       9                 :             : #include <js/CallArgs.h>
      10                 :             : #include <js/PropertyDescriptor.h>  // for JSPROP_READONLY
      11                 :             : #include <js/PropertySpec.h>
      12                 :             : #include <js/RootingAPI.h>
      13                 :             : #include <js/TypeDecls.h>
      14                 :             : #include <jsapi.h>  // for JS_NewObjectWithGivenProto
      15                 :             : #include <jspubtd.h>  // for JSProtoKey
      16                 :             : 
      17                 :             : #include "gjs/jsapi-util-args.h"
      18                 :             : #include "gjs/macros.h"
      19                 :             : #include "modules/cairo-memory.h"
      20                 :             : #include "modules/cairo-private.h"
      21                 :             : 
      22                 :           2 : JSObject* CairoSolidPattern::new_proto(JSContext* cx, JSProtoKey) {
      23                 :           2 :     JS::RootedObject parent_proto(cx, CairoPattern::prototype(cx));
      24                 :           2 :     return JS_NewObjectWithGivenProto(cx, nullptr, parent_proto);
      25                 :           2 : }
      26                 :             : 
      27                 :             : // clang-format off
      28                 :             : const JSPropertySpec CairoSolidPattern::proto_props[] = {
      29                 :             :     JS_STRING_SYM_PS(toStringTag, "SolidPattern", JSPROP_READONLY),
      30                 :             :     JS_PS_END};
      31                 :             : // clang-format on
      32                 :             : 
      33                 :           9 : void CairoSolidPattern::add_associated_memory(JSObject* obj,
      34                 :             :                                               cairo_pattern_t* pattern) {
      35                 :           9 :     add_associated_memory_for_pattern(obj, pattern);
      36                 :           9 : }
      37                 :             : 
      38                 :             : GJS_JSAPI_RETURN_CONVENTION
      39                 :           6 : static bool createRGB_func(JSContext* cx, unsigned argc, JS::Value* vp) {
      40                 :           6 :     JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
      41                 :             :     double red, green, blue;
      42         [ +  + ]:           6 :     if (!gjs_parse_call_args(cx, "createRGB", args, "fff", "red", &red, "green",
      43                 :             :                              &green, "blue", &blue))
      44                 :           1 :         return false;
      45                 :             : 
      46                 :           5 :     cairo_pattern_t* pattern = cairo_pattern_create_rgb(red, green, blue);
      47         [ -  + ]:           5 :     if (!gjs_cairo_check_status(cx, cairo_pattern_status(pattern), "pattern"))
      48                 :           0 :         return false;
      49                 :             : 
      50                 :           5 :     JSObject* pattern_wrapper = CairoSolidPattern::from_c_ptr(cx, pattern);
      51         [ -  + ]:           5 :     if (!pattern_wrapper)
      52                 :           0 :         return false;
      53                 :           5 :     cairo_pattern_destroy(pattern);
      54                 :             : 
      55                 :           5 :     args.rval().setObject(*pattern_wrapper);
      56                 :             : 
      57                 :           5 :     return true;
      58                 :             : }
      59                 :             : 
      60                 :             : GJS_JSAPI_RETURN_CONVENTION
      61                 :           1 : static bool createRGBA_func(JSContext* cx, unsigned argc, JS::Value* vp) {
      62                 :           1 :     JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
      63                 :             :     double red, green, blue, alpha;
      64         [ -  + ]:           1 :     if (!gjs_parse_call_args(cx, "createRGBA", args, "ffff", "red", &red,
      65                 :             :                              "green", &green, "blue", &blue, "alpha", &alpha))
      66                 :           0 :         return false;
      67                 :             : 
      68                 :             :     cairo_pattern_t* pattern =
      69                 :           1 :         cairo_pattern_create_rgba(red, green, blue, alpha);
      70         [ -  + ]:           1 :     if (!gjs_cairo_check_status(cx, cairo_pattern_status(pattern), "pattern"))
      71                 :           0 :         return false;
      72                 :             : 
      73                 :           1 :     JSObject* pattern_wrapper = CairoSolidPattern::from_c_ptr(cx, pattern);
      74         [ -  + ]:           1 :     if (!pattern_wrapper)
      75                 :           0 :         return false;
      76                 :           1 :     cairo_pattern_destroy(pattern);
      77                 :             : 
      78                 :           1 :     args.rval().setObject(*pattern_wrapper);
      79                 :             : 
      80                 :           1 :     return true;
      81                 :             : }
      82                 :             : 
      83                 :             : // clang-format off
      84                 :             : const JSFunctionSpec CairoSolidPattern::static_funcs[] = {
      85                 :             :     JS_FN("createRGB", createRGB_func, 0, 0),
      86                 :             :     JS_FN("createRGBA", createRGBA_func, 0, 0),
      87                 :             :     JS_FS_END};
      88                 :             : // clang-format on
        

Generated by: LCOV version 2.0-1