LCOV - code coverage report
Current view: top level - gui/include/sketch - gui_sketch_texture.inl (source / functions) Coverage Total Hit
Test: crystal-facet-uml_v1.63.2_covts Lines: 28.6 % 28 8
Test Date: 2025-05-01 10:10:14 Functions: 66.7 % 3 2

            Line data    Source code
       1              : /* File: gui_sketch_texture.inl; Copyright and License: see below */
       2              : 
       3              : #include "u8/u8_log.h"
       4              : #include "u8/u8_trace.h"
       5              : #include <assert.h>
       6              : 
       7            4 : static inline void gui_sketch_texture_init( gui_sketch_texture_t *this_ )
       8              : {
       9            4 :     (*this_).memory_fence_1 = 12345;
      10            4 :     (*this_).memory_fence_2 = 54321;
      11              :     (*this_).surface
      12            4 :         = cairo_image_surface_create_for_data( &((*this_).buf[0]),
      13              :                                                CAIRO_FORMAT_ARGB32,
      14              :                                                GUI_SKETCH_TEXTURE_MAX_WIDTH,
      15              :                                                GUI_SKETCH_TEXTURE_MAX_HEIGHT,
      16              :                                                GUI_SKETCH_TEXTURE_MAX_WIDTH * GUI_SKETCH_TEXTURE_BYTES_PER_PIXEL /* = stride */
      17              :                                              );
      18            4 : }
      19              : 
      20            4 : static inline void gui_sketch_texture_destroy( gui_sketch_texture_t *this_ )
      21              : {
      22            4 :     cairo_surface_destroy( (*this_).surface );
      23            4 : }
      24              : 
      25            0 : static inline u8_error_t gui_sketch_texture_draw( gui_sketch_texture_t *this_,
      26              :                                                   GdkTexture *icon,
      27              :                                                   double left,
      28              :                                                   double top,
      29              :                                                   cairo_t *cr )
      30              : {
      31            0 :     U8_TRACE_BEGIN();
      32            0 :     assert( icon != NULL );
      33            0 :     assert( cr != NULL );
      34            0 :     u8_error_t result = U8_ERROR_NONE;
      35              : 
      36            0 :     const int icon_width = gdk_texture_get_width( icon );
      37            0 :     const int icon_height = gdk_texture_get_height( icon );
      38            0 :     if (( icon_width <= GUI_SKETCH_TEXTURE_MAX_WIDTH )&&( icon_height <= GUI_SKETCH_TEXTURE_MAX_HEIGHT ))
      39              :     {
      40            0 :         cairo_surface_flush( (*this_).surface );
      41            0 :         gdk_texture_download( icon,
      42            0 :                               &((*this_).buf[0]),
      43              :                               GUI_SKETCH_TEXTURE_MAX_WIDTH * GUI_SKETCH_TEXTURE_BYTES_PER_PIXEL /* = stride */
      44              :                             );
      45            0 :         cairo_surface_mark_dirty( (*this_).surface );
      46              :         /* check that boundaries of (*this_).buf have not been overwritten: */
      47            0 :         assert( (*this_).memory_fence_1 == 12345 );
      48            0 :         assert( (*this_).memory_fence_2 == 54321 );
      49              : 
      50            0 :         cairo_set_source_surface( cr, (*this_).surface, left, top );
      51            0 :         cairo_rectangle( cr, left, top, icon_width, icon_height );
      52            0 :         cairo_fill( cr );
      53              :     }
      54              :     else
      55              :     {
      56            0 :         result = U8_ERROR_EDGE_CASE_PARAM;
      57              :     }
      58              : 
      59            0 :     U8_TRACE_END_ERR( result );
      60            0 :     return result;
      61              : }
      62              : 
      63              : 
      64              : /*
      65              : Copyright 2024-2025 Andreas Warnke
      66              : 
      67              : Licensed under the Apache License, Version 2.0 (the "License");
      68              : you may not use this file except in compliance with the License.
      69              : You may obtain a copy of the License at
      70              : 
      71              :     http://www.apache.org/licenses/LICENSE-2.0
      72              : 
      73              : Unless required by applicable law or agreed to in writing, software
      74              : distributed under the License is distributed on an "AS IS" BASIS,
      75              : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      76              : See the License for the specific language governing permissions and
      77              : limitations under the License.
      78              : */
        

Generated by: LCOV version 2.0-1