LCOV - code coverage report
Current view: top level - geom - GfxPreview.cpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 3 152 2.0 %
Date: 2020-06-30 00:58:45 Functions: 3 35 8.6 %
Branches: 3 210 1.4 %

           Branch data     Line data    Source code
       1                 :            : 
       2                 :            : 
       3                 :            : #include "GfxPreview.hpp"
       4                 :            : #include "GMem.hpp"
       5                 :            : #include "CubitVector.hpp"
       6                 :            : #include "Curve.hpp"
       7                 :            : #include "Surface.hpp"
       8                 :            : #include "GeometryQueryEngine.hpp"
       9                 :            : #include "Point.hpp"
      10                 :            : #include <assert.h>
      11                 :            : #include "DrawingToolDefines.h"
      12                 :            : 
      13                 :            : GfxPreview* GfxPreview::mInstance = 0;
      14                 :            : 
      15                 :          0 : GfxPreview::GfxPreview()
      16                 :            : {
      17         [ #  # ]:          0 :   if(mInstance)
      18                 :            :   {
      19                 :          0 :     assert(0);
      20                 :            :     // if you want a new instance in place of a previous one,
      21                 :            :     // delete the previous one first
      22                 :            :   }
      23                 :          0 :   mInstance = this;
      24                 :          0 : }
      25                 :            : 
      26                 :          0 : GfxPreview::~GfxPreview()
      27                 :            : {
      28                 :          0 :   mInstance = 0;
      29         [ #  # ]:          0 : }
      30                 :            : 
      31                 :            : 
      32                 :            : // This clears preview data ONLY
      33                 :         22 : void GfxPreview::clear()
      34                 :            : {
      35         [ +  - ]:         22 :   if(!mInstance) return;
      36                 :          0 :   mInstance->p_clear();
      37                 :            : }
      38                 :            : 
      39                 :            : // causes the current window to be redrawn
      40                 :          0 : void GfxPreview::flush()
      41                 :            : {
      42         [ #  # ]:          0 :   if(!mInstance) return;
      43                 :          0 :   mInstance->p_flush();
      44                 :            : }
      45                 :            : 
      46                 :            : // Geometry Drawing Functions
      47                 :            :     
      48                 :          0 : void GfxPreview::draw_ref_entity(RefEntity* entity, int color, CubitTransformMatrix* mat)
      49                 :            : {
      50         [ #  # ]:          0 :   if(!mInstance) return;
      51                 :          0 :   mInstance->p_draw_ref_entity(entity, color, mat);
      52                 :            : }
      53                 :            : 
      54                 :          0 : void GfxPreview::draw_ref_vertex(RefVertex* entity, int color)
      55                 :            : {
      56         [ #  # ]:          0 :   if(!mInstance) return;
      57                 :          0 :   mInstance->p_draw_ref_vertex(entity, color);
      58                 :            : }
      59                 :            : 
      60                 :          0 : void GfxPreview::draw_ref_edge(RefEdge* entity, int color)
      61                 :            : {
      62         [ #  # ]:          0 :   if(!mInstance) return;
      63                 :          0 :   mInstance->p_draw_ref_edge(entity, color);
      64                 :            : }
      65                 :            : 
      66                 :          0 : void GfxPreview::draw_ref_face(RefFace* entity, int color)
      67                 :            : {
      68         [ #  # ]:          0 :   if(!mInstance) return;
      69                 :          0 :   mInstance->p_draw_ref_face(entity, color);
      70                 :            : }
      71                 :            : 
      72                 :          0 : void GfxPreview::draw_ref_face_edges(RefFace* entity, int color)
      73                 :            : {
      74         [ #  # ]:          0 :   if(!mInstance) return;
      75                 :          0 :   mInstance->p_draw_ref_face_edges(entity, color);
      76                 :            : }
      77                 :            : 
      78                 :          0 : void GfxPreview::draw_ref_volume(RefVolume* entity, int color, int mode)
      79                 :            : {
      80         [ #  # ]:          0 :   if(!mInstance) return;
      81                 :          0 :   mInstance->p_draw_ref_volume(entity, color, mode);
      82                 :            : }
      83                 :            : 
      84                 :          0 : void GfxPreview::draw_ref_volume_edges(RefVolume* entity, int color)
      85                 :            : {
      86         [ #  # ]:          0 :   if(!mInstance) return;
      87                 :          0 :   mInstance->p_draw_ref_volume_edges(entity, color);
      88                 :            : }
      89                 :            : 
      90                 :          0 : void GfxPreview::draw_ref_body(Body* entity, int color, int mode)
      91                 :            : {
      92         [ #  # ]:          0 :   if(!mInstance) return;
      93                 :          0 :   mInstance->p_draw_ref_body(entity, color, mode);
      94                 :            : }
      95                 :            : 
      96                 :            : // Generic Primitive Drawing Functions
      97                 :            : 
      98                 :          0 : void GfxPreview::draw_box(CubitBox& box, int color)
      99                 :            : {
     100         [ #  # ]:          0 :   if(!mInstance) return;
     101                 :          0 :   mInstance->p_draw_box(box, color);
     102                 :            : }
     103                 :            : 
     104                 :            : // draw point x,y,z of color
     105                 :          0 : void GfxPreview::draw_point(float x, float y, float z, int color)
     106                 :            : {
     107         [ #  # ]:          0 :   if(!mInstance) return;
     108                 :          0 :   mInstance->p_draw_point(x, y, z, color);
     109                 :            : }
     110                 :            : 
     111                 :          0 : void GfxPreview::draw_point(const CubitVector& vector, int color)
     112                 :            : {
     113         [ #  # ]:          0 :   if(!mInstance) return;
     114                 :          0 :   mInstance->p_draw_point(vector, color);
     115                 :            : }
     116                 :            : 
     117                 :          0 : void GfxPreview::draw_point(CubitVector* vector, int color)
     118                 :            : {
     119         [ #  # ]:          0 :   if(!mInstance) return;
     120                 :          0 :   mInstance->p_draw_point(*vector, color);
     121                 :            : }
     122                 :            : 
     123                 :            : // draw line of points {x,y,z}, {x,y,z} of color
     124                 :          0 : void GfxPreview::draw_line(float x1, float y1, float z1, float x2, float y2, float z2, int color)
     125                 :            : {
     126         [ #  # ]:          0 :   if(!mInstance) return;
     127                 :          0 :   mInstance->p_draw_line(x1, y1, z1, x2, y2, z2, color);
     128                 :            : }
     129                 :            : 
     130                 :          0 : void GfxPreview::draw_line(const CubitVector& x, const CubitVector& y, int color)
     131                 :            : {
     132         [ #  # ]:          0 :   if(!mInstance) return;
     133                 :          0 :   mInstance->p_draw_line(x, y, color);
     134                 :            : }
     135                 :            : 
     136                 :            : // draw a polyline with a number of points of a color
     137                 :          0 : void GfxPreview::draw_polyline(const GPoint* points, int num_points, int color)
     138                 :            : {
     139         [ #  # ]:          0 :   if(!mInstance) return;
     140                 :          0 :   mInstance->p_draw_polyline(points, num_points, color);
     141                 :            : }
     142                 :            : 
     143                 :            : // draw polygons given the coordinates and the connectivity.  Note that the
     144                 :            : // connectivity (face_list) is given as the number of points in the polygon 
     145                 :            : // followed by the point ids for that polygon.  So, the num_face_points is
     146                 :            : // the total number of data points in the face_list such that
     147                 :            : // num_face_points = number of points + number of polygons
     148                 :          0 : void GfxPreview::draw_polygons(int num_points, const double* xyzs, int num_face_points,
     149                 :            :                                const int* face_list, int color, int mode )
     150                 :            : {
     151         [ #  # ]:          0 :   if (!mInstance) 
     152                 :          0 :     return;
     153                 :          0 :   mInstance->p_draw_polygons( num_points, xyzs, num_face_points, face_list, color, mode);
     154                 :            : }
     155                 :            : 
     156                 :            : // draw a polyline with a number of points of a color
     157                 :          0 : void GfxPreview::draw_polygon(const GPoint* points, int num_points, int color, int border_color, bool filled)
     158                 :            : {
     159         [ #  # ]:          0 :   if(!mInstance) return;
     160                 :          0 :   mInstance->p_draw_polygon(points, num_points, color, border_color, filled);
     161                 :            : }
     162                 :            : 
     163                 :            : // draw a quad of a color
     164                 :          0 : void GfxPreview::draw_quad(const GPoint* points, int color)
     165                 :            : {
     166         [ #  # ]:          0 :   if(!mInstance) return;
     167                 :          0 :   mInstance->p_draw_quad(points, color);
     168                 :            : }
     169                 :            : 
     170                 :            : // draw a tri of a color
     171                 :          0 : void GfxPreview::draw_tri(const GPoint* points, int color)
     172                 :            : {
     173         [ #  # ]:          0 :   if(!mInstance) return;
     174                 :          0 :   mInstance->p_draw_tri(points, color);
     175                 :            : }
     176                 :            : 
     177                 :          0 : void GfxPreview::draw_vector(const CubitVector& tail, const CubitVector& head, int color)
     178                 :            : {
     179         [ #  # ]:          0 :   if(!mInstance) return;
     180                 :          0 :   mInstance->p_draw_vector(tail, head, color);
     181                 :            : }
     182                 :            : 
     183                 :          0 : void GfxPreview::draw_vector(const GPoint* tail, const GPoint* head, int color)
     184                 :            : {
     185         [ #  # ]:          0 :   if(!mInstance) return;
     186 [ #  # ][ #  # ]:          0 :   mInstance->p_draw_vector(CubitVector(tail->x, tail->y, tail->z), CubitVector(head->x, head->y, head->z), color);
     187                 :            : }
     188                 :            : 
     189                 :            : // draw a label at position x,y,z of color
     190                 :          0 : void GfxPreview::draw_label(const char* label, float x, float y, float z, int color)
     191                 :            : {
     192         [ #  # ]:          0 :   if(!mInstance) return;
     193                 :          0 :   mInstance->p_draw_label(label, x, y, z, color);
     194                 :            : }
     195                 :          0 : void GfxPreview::draw_label(int label, float x, float y, float z, int color)
     196                 :            : {
     197         [ #  # ]:          0 :   if(!mInstance) return;
     198                 :          0 :   mInstance->p_draw_label(label, x, y, z, color);
     199                 :            : }
     200                 :            : 
     201                 :          0 : void GfxPreview:: draw_cylinder(const CubitVector& axis, const CubitVector& origin, 
     202                 :            :                                  CubitBox& bounding_box, float radius, int color)
     203                 :            : {
     204         [ #  # ]:          0 :   if(!mInstance) return;
     205                 :          0 :   mInstance->p_draw_cylinder(axis, origin, bounding_box, radius, color);
     206                 :            : }
     207                 :            : 
     208                 :          0 : void GfxPreview:: draw_frustum( const CubitVector axis , const CubitVector origin1, const CubitVector origin2,double dRad1 , double dRad2,
     209                 :            :                                CubitBox& bounding_box ,int color)
     210                 :            : {
     211         [ #  # ]:          0 :   if(!mInstance) return;
     212 [ #  # ][ #  # ]:          0 :   mInstance->p_draw_frustum( axis , origin1, origin2, dRad1 , dRad2 , bounding_box, color);
         [ #  # ][ #  # ]
     213                 :            : }
     214                 :            : 
     215                 :          0 : void GfxPreview::draw_point(TBPoint *pt, int color)
     216                 :            : {
     217         [ #  # ]:          0 :   CubitVector v = pt->coordinates();
     218         [ #  # ]:          0 :   draw_point(v, color);
     219         [ #  # ]:          0 :   flush();
     220                 :          0 : }
     221                 :            : 
     222                 :          0 : void GfxPreview::draw_curve(Curve *curve, int color)
     223                 :            : {
     224                 :          0 :   int num_divs = 20;
     225                 :            :   double lo, hi;
     226         [ #  # ]:          0 :   curve->get_param_range(lo, hi);
     227                 :          0 :   double dv = (hi-lo)/(double)num_divs;
     228                 :            :   int i;
     229                 :          0 :   double param = lo;
     230         [ #  # ]:          0 :   for(i=0; i<num_divs; i++)
     231                 :            :   {
     232 [ #  # ][ #  # ]:          0 :     CubitVector p1, p2;
     233         [ #  # ]:          0 :     curve->position_from_u(param, p1);
     234                 :          0 :     param += dv;
     235         [ #  # ]:          0 :     curve->position_from_u(param, p2);
     236 [ #  # ][ #  # ]:          0 :     draw_line(p1.x(), p1.y(), p1.z(), p2.x(), p2.y(), p2.z(), color);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     237                 :            :   }
     238         [ #  # ]:          0 :   flush();
     239         [ #  # ]:          0 :   DLIList<TBPoint*> pts;
     240         [ #  # ]:          0 :   curve->points(pts);
     241 [ #  # ][ #  # ]:          0 :   for(i=pts.size(); i>0; i--)
     242                 :            :   {
     243         [ #  # ]:          0 :     TBPoint *cur_pt = pts.get_and_step();
     244         [ #  # ]:          0 :     draw_point(cur_pt, color);
     245         [ #  # ]:          0 :   }
     246                 :          0 : }
     247                 :            : 
     248                 :          0 : void GfxPreview::draw_surface(Surface *surf, int color)
     249                 :            : {
     250                 :          0 :   int num_divs = 20;
     251                 :            :   double ulo, uhi, vlo, vhi;
     252         [ #  # ]:          0 :   surf->get_param_range_U(ulo, uhi);
     253         [ #  # ]:          0 :   surf->get_param_range_V(vlo, vhi);
     254                 :          0 :   double du = (uhi-ulo)/(double)num_divs;
     255                 :          0 :   double dv = (vhi-vlo)/(double)num_divs;
     256                 :            :   int i, j;
     257                 :            :   double uparam, vparam;
     258                 :          0 :   uparam = ulo;
     259         [ #  # ]:          0 :   for(i=0; i<num_divs; i++)
     260                 :            :   {
     261                 :          0 :     vparam = vlo;
     262         [ #  # ]:          0 :     for(j=0; j<num_divs; j++)
     263                 :            :     {
     264 [ #  # ][ #  # ]:          0 :       CubitVector p1, p2;
     265 [ #  # ][ #  # ]:          0 :       p1 = surf->position_from_u_v(uparam, vparam);
     266                 :          0 :       vparam += dv;
     267 [ #  # ][ #  # ]:          0 :       p2 = surf->position_from_u_v(uparam, vparam);
     268 [ #  # ][ #  # ]:          0 :       draw_line(p1.x(), p1.y(), p1.z(), p2.x(), p2.y(), p2.z(), color);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     269                 :            :     }
     270                 :          0 :     uparam += du;
     271                 :            :   }
     272                 :          0 :   vparam = vlo;
     273         [ #  # ]:          0 :   for(i=0; i<num_divs; i++)
     274                 :            :   {
     275                 :          0 :     uparam = ulo;
     276         [ #  # ]:          0 :     for(j=0; j<num_divs; j++)
     277                 :            :     {
     278 [ #  # ][ #  # ]:          0 :       CubitVector p1, p2;
     279 [ #  # ][ #  # ]:          0 :       p1 = surf->position_from_u_v(uparam, vparam);
     280                 :          0 :       uparam += du;
     281 [ #  # ][ #  # ]:          0 :       p2 = surf->position_from_u_v(uparam, vparam);
     282 [ #  # ][ #  # ]:          0 :       draw_line(p1.x(), p1.y(), p1.z(), p2.x(), p2.y(), p2.z(), color);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     283                 :            :     }
     284                 :          0 :     vparam += dv;
     285                 :            :   }
     286         [ #  # ]:          0 :   flush();
     287                 :          0 : }
     288                 :            : 
     289                 :          0 : void GfxPreview::draw_surface_facets_shaded(Surface *surf, int color)
     290                 :            : {
     291         [ #  # ]:          0 :   GMem g_mem;
     292                 :            : 
     293 [ #  # ][ #  # ]:          0 :   surf->get_geometry_query_engine()->get_graphics(surf, &g_mem);
     294                 :            : 
     295         [ #  # ]:          0 :   const float* xyzs = reinterpret_cast<const float*>(g_mem.point_list());
     296 [ #  # ][ #  # ]:          0 :   std::vector<double> dcoords(xyzs, xyzs+g_mem.pointListCount*3);
     297         [ #  # ]:          0 :   GfxPreview::draw_polygons(g_mem.pointListCount, &dcoords[0],
     298         [ #  # ]:          0 :                             g_mem.fListCount, g_mem.facet_list(),
     299         [ #  # ]:          0 :                             color, CUBIT_SMOOTH_SHADING);
     300 [ #  # ][ #  # ]:          0 :   flush();
     301 [ +  - ][ +  - ]:       6540 : }
     302                 :            : 

Generated by: LCOV version 1.11