GRASS Programmer's Manual  6.4.2(2012)
cplanes_obj.c
Go to the documentation of this file.
00001 
00015 #include <grass/nviz.h>
00016 
00017 static void cp_draw(nv_data *, int, int, int);
00018 
00026 int Nviz_new_cplane(nv_data * data, int id)
00027 {
00028     data->num_cplanes++;
00029     /* Initialize internal attributes for this cutplane */
00030     data->cp_rot[id][X] = data->cp_rot[id][Y] = data->cp_rot[id][Z] = 0.0;
00031     data->cp_trans[id][X] = data->cp_trans[id][Y] = data->cp_trans[id][Z] =
00032         0.0;
00033     data->cp_on[id] = 0;
00034 
00035     return 1;
00036 }
00037 
00044 int Nviz_off_cplane(nv_data * data, int id)
00045 {
00046     data->cp_on[id] = 0;
00047     GS_unset_cplane(id);
00048 
00049     return 1;
00050 }
00051 
00058 int Nviz_draw_cplane(nv_data * data, int bound1, int bound2)
00059 {
00060     cp_draw(data, data->cur_cplane, bound1, bound2);
00061 
00062     return 1;
00063 }
00064 
00073 void cp_draw(nv_data * data, int current, int surf1, int surf2)
00074 {
00075     int i, nsurfs;
00076     int surf_min = 0, surf_max = 0, temp;
00077     int *surf_list;
00078 
00079     GS_set_draw(GSD_BACK);
00080     GS_clear(data->bgcolor);
00081     GS_ready_draw();
00082 
00083     /* If surf boundaries present then find them */
00084     surf_list = GS_get_surf_list(&nsurfs);
00085     if ((surf1 != -1) && (surf2 != -1)) {
00086         for (i = 0; i < nsurfs; i++) {
00087             if (surf_list[i] == surf1)
00088                 surf_min = i;
00089             if (surf_list[i] == surf2)
00090                 surf_max = i;
00091         }
00092 
00093         if (surf_max < surf_min) {
00094             temp = surf_min;
00095             surf_min = surf_max;
00096             surf_max = temp;
00097         }
00098 
00099         surf_max++;
00100     }
00101     else {
00102         surf_min = 0;
00103         surf_max = nsurfs;
00104     }
00105 
00106     if (nsurfs > 1) {
00107         for (i = 0; i < MAX_CPLANES; i++) {
00108             if (data->cp_on[i])
00109                 GS_draw_cplane_fence(surf_list[0], surf_list[1], i);
00110         }
00111     }
00112 
00113     for (i = surf_min; i < surf_max; i++) {
00114         GS_draw_wire(surf_list[i]);
00115     }
00116 
00117     GS_done_draw();
00118 
00119     return;
00120 }
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines