LCOV - code coverage report
Current view: top level - gui/include/sketch - gui_sketch_area.inl (source / functions) Hit Total Coverage
Test: crystal-facet-uml_v1.61.0_covts Lines: 0 53 0.0 %
Date: 2024-10-26 21:44:38 Functions: 0 5 0.0 %

          Line data    Source code
       1             : /* File: gui_sketch_area.inl; Copyright and License: see below */
       2             : 
       3             : #include "u8/u8_log.h"
       4             : #include <assert.h>
       5             : 
       6           0 : static inline data_diagram_t *gui_sketch_area_private_get_focused_diagram_ptr ( gui_sketch_area_t *this_ )
       7             : {
       8             :     gui_sketch_card_t *result_card;
       9           0 :     result_card = &((*this_).cards[GUI_SKETCH_AREA_CONST_FOCUSED_CARD]);
      10           0 :     return gui_sketch_card_get_diagram_ptr( result_card );
      11             : }
      12             : 
      13           0 : static inline data_row_id_t gui_sketch_area_private_get_focused_diagram_id ( gui_sketch_area_t *this_ )
      14             : {
      15           0 :     const data_diagram_t *focused_diag = gui_sketch_area_private_get_focused_diagram_ptr( this_ );
      16           0 :     const data_row_id_t focused_diagram_id = data_diagram_get_row_id( focused_diag );
      17           0 :     return focused_diagram_id;
      18             : }
      19             : 
      20           0 : static inline void gui_sketch_area_private_get_diagram_and_object_id_at_pos ( gui_sketch_area_t *this_,
      21             :                                                                               int32_t x,
      22             :                                                                               int32_t y,
      23             :                                                                               data_id_t* out_diagram_id,
      24             :                                                                               data_id_t* out_object_id )
      25             : {
      26           0 :     assert( NULL != out_diagram_id );
      27           0 :     assert( NULL != out_object_id );
      28           0 :     assert( (*this_).card_num <= GUI_SKETCH_AREA_CONST_MAX_CARDS );
      29           0 :     data_id_reinit_void( out_diagram_id );
      30           0 :     data_id_reinit_void( out_object_id );
      31             : 
      32           0 :     if ( gui_sketch_nav_tree_is_visible( &((*this_).nav_tree) ) )
      33             :     {
      34           0 :         gui_sketch_nav_tree_get_object_id_at_pos( &((*this_).nav_tree), x, y, out_diagram_id );
      35           0 :         data_id_replace( out_object_id, out_diagram_id );
      36             :     }
      37           0 :     else if ( gui_sketch_result_list_is_visible( &((*this_).result_list) ) )
      38             :     {
      39           0 :         gui_sketch_result_list_get_object_id_at_pos ( &((*this_).result_list),
      40             :                                                       x,
      41             :                                                       y,
      42             :                                                       out_object_id,  /* = out_selected_id */
      43             :                                                       out_diagram_id  /* = out_diagram_id */
      44             :                                                     );
      45             :     }
      46             : 
      47           0 :     for ( int idx = 0; idx < (*this_).card_num; idx ++ )
      48             :     {
      49           0 :         const gui_sketch_card_t *card = &((*this_).cards[idx]);
      50           0 :         const shape_int_rectangle_t card_bounds = gui_sketch_card_get_bounds( card );
      51           0 :         if ( shape_int_rectangle_contains( &card_bounds, x, y ) )
      52             :         {
      53             :             const data_diagram_t *selected_diag
      54           0 :                  = gui_sketch_card_get_diagram_const( card );
      55           0 :             data_id_reinit( out_diagram_id, DATA_TABLE_DIAGRAM, data_diagram_get_row_id( selected_diag ) );
      56           0 :             data_id_replace( out_object_id, out_diagram_id );
      57           0 :             break;
      58             :         }
      59             :     }
      60           0 : }
      61             : 
      62           0 : static inline void gui_sketch_area_private_get_element_id_at_pos ( gui_sketch_area_t *this_,
      63             :                                                                    int32_t x,
      64             :                                                                    int32_t y,
      65             :                                                                    bool filter_lifelines,
      66             :                                                                    data_full_id_t* out_element_id,
      67             :                                                                    data_id_t* out_diagram_id )
      68             : {
      69           0 :     assert( (*this_).card_num <= GUI_SKETCH_AREA_CONST_MAX_CARDS );
      70           0 :     assert( NULL != out_element_id );
      71           0 :     assert( NULL != out_diagram_id );
      72           0 :     data_full_id_reinit_void( out_element_id );
      73           0 :     data_id_reinit_void( out_diagram_id );
      74             : 
      75           0 :     for ( int idx = 0; idx < (*this_).card_num; idx ++ )
      76             :     {
      77           0 :         const gui_sketch_card_t *const card = &((*this_).cards[idx]);
      78           0 :         const shape_int_rectangle_t card_bounds = gui_sketch_card_get_bounds( card );
      79           0 :         if ( shape_int_rectangle_contains( &card_bounds, x, y ) )
      80             :         {
      81           0 :             *out_diagram_id = gui_sketch_card_get_diagram_id( card );
      82             :             const layout_subelement_id_t subelement
      83           0 :                 = gui_sketch_card_get_element_at_pos( card, x, y, filter_lifelines );
      84           0 :             if ( LAYOUT_SUBELEMENT_KIND_SPACE == layout_subelement_id_get_kind( &subelement ) )
      85             :             {
      86             :                 /* do not report space areas, in EDIT mode these are of no concern, */
      87             :                 /* in CREATE mode during dragging, these are also of no concern. */
      88             :             }
      89             :             else
      90             :             {
      91           0 :                 data_full_id_replace( out_element_id, layout_subelement_id_get_id_const( &subelement ) );
      92             :             }
      93           0 :             break;
      94             :         }
      95             :     }
      96           0 : }
      97             : 
      98           0 : static inline gui_sketch_card_t *gui_sketch_area_private_get_card_at_pos ( gui_sketch_area_t *this_, int32_t x, int32_t y )
      99             : {
     100           0 :     assert( (*this_).card_num <= GUI_SKETCH_AREA_CONST_MAX_CARDS );
     101           0 :     gui_sketch_card_t *result = NULL;
     102             : 
     103           0 :     for ( int idx = 0; idx < (*this_).card_num; idx ++ )
     104             :     {
     105           0 :         gui_sketch_card_t *card = &((*this_).cards[idx]);
     106           0 :         const shape_int_rectangle_t card_bounds = gui_sketch_card_get_bounds( card );
     107           0 :         if ( shape_int_rectangle_contains( &card_bounds, x, y ) )
     108             :         {
     109           0 :             result = card;
     110           0 :             break;
     111             :         }
     112             :     }
     113           0 :     return result;
     114             : }
     115             : 
     116             : 
     117             : /*
     118             : Copyright 2016-2024 Andreas Warnke
     119             : 
     120             : Licensed under the Apache License, Version 2.0 (the "License");
     121             : you may not use this file except in compliance with the License.
     122             : You may obtain a copy of the License at
     123             : 
     124             :     http://www.apache.org/licenses/LICENSE-2.0
     125             : 
     126             : Unless required by applicable law or agreed to in writing, software
     127             : distributed under the License is distributed on an "AS IS" BASIS,
     128             : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     129             : See the License for the specific language governing permissions and
     130             : limitations under the License.
     131             : */

Generated by: LCOV version 1.16