📄 display_x11.c
字号:
myobj->mark_col_change(); myobj->mark_pos_change(); } else myobj= static_cast<D_XArcs*>(d_obj); //dynamic_cast should also work, but it doesn't <- why? //here we have the assumption num= myobj->pp.max_size; i.e. the it is not allowed to change the number of arcs if (myobj->col_change) { myobj->col_change= false; myobj->XColor_pixel= AGetColor(col); } if (myobj->area_number != area_number) { myobj->area_number= area_number; copy_2_XArcs(myobj->aa.tab, num, vec); } ASetForeground(myobj->XColor_pixel); XFillArcs(disp,pixmap,gc,myobj->aa.tab,num);} //specifies an arc with absolute begin in ang1 and absolute!!! end in ang2, the path goes from ang1 to ang2 couterclockwisevoid DisplayX11::draw_circlearc(DisplayObject * d_obj, const RGBcolor & col, const CircleArc2d & circlearc){ D_XArc *myobj; if (!d_obj) { myobj= &d_xarc; myobj->mark_col_change(); myobj->mark_pos_change(); } else myobj= static_cast<D_XArc*>(d_obj); //dynamic_cast should also work, but it doesn't <- why? if (myobj->col_change) { myobj->col_change= false; myobj->XColor_pixel= AGetColor(col); } if (myobj->area_number != area_number) { myobj->area_number= area_number; copy_2_XArc(myobj->a,circlearc); } ASetForeground(myobj->XColor_pixel); XDrawArc(disp,pixmap,gc, myobj->a.x, myobj->a.y, myobj->a.width, myobj->a.height, myobj->a.angle1,myobj->a.angle2);}void DisplayX11::draw_circlearcs(DisplayObject * d_obj, const RGBcolor & col, int num, const CircleArc2d * vec){ D_XArcs *myobj; if (!d_obj) { if (d_xarcs.aa.max_size < num) d_xarcs.aa.set_max_size(num); d_xarcs.aa.set_cur_size(num); myobj= &d_xarcs; myobj->mark_col_change(); myobj->mark_pos_change(); } else myobj= static_cast<D_XArcs*>(d_obj); //dynamic_cast should also work, but it doesn't <- why? //here we have the assumption num= myobj->pp.max_size; i.e. the it is not allowed to change the number of arcs if (myobj->col_change) { myobj->col_change= false; myobj->XColor_pixel= AGetColor(col); } if (myobj->area_number != area_number) { myobj->area_number= area_number; copy_2_XArcs(myobj->aa.tab, num, vec); } ASetForeground(myobj->XColor_pixel); XDrawArcs(disp,pixmap,gc,myobj->aa.tab,num);}void DisplayX11::fill_circlearc(DisplayObject * d_obj, const RGBcolor & col, const CircleArc2d & circlearc){ D_XArc *myobj; if (!d_obj) { myobj= &d_xarc; myobj->mark_col_change(); myobj->mark_pos_change(); } else myobj= static_cast<D_XArc*>(d_obj); //dynamic_cast should also work, but it doesn't <- why? if (myobj->col_change) { myobj->col_change= false; myobj->XColor_pixel= AGetColor(col); } if (myobj->area_number != area_number) { myobj->area_number= area_number; copy_2_XArc(myobj->a,circlearc); } ASetForeground(myobj->XColor_pixel); XFillArc(disp,pixmap,gc, myobj->a.x, myobj->a.y, myobj->a.width, myobj->a.height, myobj->a.angle1,myobj->a.angle2);}void DisplayX11::fill_circlearcs(DisplayObject * d_obj, const RGBcolor & col, int num, const CircleArc2d * vec){ D_XArcs *myobj; if (!d_obj) { if (d_xarcs.aa.max_size < num) d_xarcs.aa.set_max_size(num); d_xarcs.aa.set_cur_size(num); myobj= &d_xarcs; myobj->mark_col_change(); myobj->mark_pos_change(); } else myobj= static_cast<D_XArcs*>(d_obj); //dynamic_cast should also work, but it doesn't <- why? //here we have the assumption num= myobj->pp.max_size; i.e. the it is not allowed to change the number of arcs if (myobj->col_change) { myobj->col_change= false; myobj->XColor_pixel= AGetColor(col); } if (myobj->area_number != area_number) { myobj->area_number= area_number; copy_2_XArcs(myobj->aa.tab, num, vec); } ASetForeground(myobj->XColor_pixel); XFillArcs(disp,pixmap,gc,myobj->aa.tab,num);}//all boudary points of the polygon are treated as absolute coordinatesvoid DisplayX11::draw_polyline(DisplayObject * d_obj, const RGBcolor & col, int num, const Point2d * vec){ D_XPoints *myobj; if (!d_obj) { if (d_xpoints.pp.max_size < num) d_xpoints.pp.set_max_size(num); d_xpoints.pp.set_cur_size(num); myobj= &d_xpoints; myobj->mark_col_change(); myobj->mark_pos_change(); } else myobj= static_cast<D_XPoints*>(d_obj); //dynamic_cast should also work, but it doesn't <- why? //here we have the assumption num= myobj->pp.max_size; i.e. the it is not allowed to change the number of points if (myobj->col_change) { myobj->col_change= false; myobj->XColor_pixel= AGetColor(col); } if (myobj->area_number != area_number) { myobj->area_number= area_number; copy_2_XPoints(myobj->pp.tab, num, vec); } ASetForeground(myobj->XColor_pixel); XDrawLines(disp,pixmap,gc,myobj->pp.tab,num,CoordModeOrigin);}void DisplayX11::draw_polygon(DisplayObject * d_obj, const RGBcolor & col, int num, const Point2d * vec) { D_XPoints *myobj; if (!d_obj) { if (d_xpoints.pp.max_size < num+1) d_xpoints.pp.set_max_size(num+1); d_xpoints.pp.set_cur_size(num+1); myobj= &d_xpoints; myobj->mark_col_change(); myobj->mark_pos_change(); } else myobj= static_cast<D_XPoints*>(d_obj); //dynamic_cast should also work, but it doesn't <- why? //here we have the assumption num= myobj->pp.max_size; i.e. the it is not allowed to change the number of points if (myobj->col_change) { myobj->col_change= false; myobj->XColor_pixel= AGetColor(col); } if (myobj->area_number != area_number) { myobj->area_number= area_number; copy_2_XPoints(myobj->pp.tab, num, vec, vec[0]); } ASetForeground(myobj->XColor_pixel); XDrawLines(disp,pixmap,gc,myobj->pp.tab,num+1,CoordModeOrigin);}void DisplayX11::fill_polygon(DisplayObject * d_obj, const RGBcolor & col, int num, const Point2d * vec){ D_XPoints *myobj; if (!d_obj) { if (d_xpoints.pp.max_size < num) d_xpoints.pp.set_max_size(num); d_xpoints.pp.set_cur_size(num); myobj= &d_xpoints; myobj->mark_col_change(); myobj->mark_pos_change(); } else myobj= static_cast<D_XPoints*>(d_obj); //dynamic_cast should also work, but it doesn't <- why? //here we have the assumption num= myobj->pp.max_size; i.e. the it is not allowed to change the number of points if (myobj->col_change) { myobj->col_change= false; myobj->XColor_pixel= AGetColor(col); } if (myobj->area_number != area_number) { myobj->area_number= area_number; copy_2_XPoints(myobj->pp.tab, num, vec); } ASetForeground(myobj->XColor_pixel); XFillPolygon(disp,pixmap,gc,myobj->pp.tab,num,Complex,CoordModeOrigin);}void DisplayX11::draw_string(DisplayObject * d_obj, const RGBcolor & col, const Point2d & pos, int len, const char * str) { D_XPoint *myobj; if (!d_obj) { myobj= &d_xpoint; myobj->mark_col_change(); myobj->mark_pos_change(); } else myobj= static_cast<D_XPoint*>(d_obj); //dynamic_cast should also work, but it doesn't <- why? if (myobj->col_change) { myobj->col_change= false; myobj->XColor_pixel= AGetColor(col); } if (myobj->area_number != area_number) { myobj->area_number= area_number; copy_2_XPoint(myobj->p,pos); } ASetForeground(myobj->XColor_pixel); XDrawPoint(disp,pixmap,gc, myobj->p.x, myobj->p.y ); XDrawString(disp,pixmap,gc, myobj->p.x, myobj->p.y, str, len);}void DisplayX11::set_background_color(const RGBcolor & col) { XSetBackground(disp, gc, AGetColor(col) );}void DisplayX11::copy_2_XPoints(XPoint * dest,int num,const Point2d * vec) const { for (int i= 0; i<num; i++) copy_2_XPoint(dest[i],vec[i]);}void DisplayX11::copy_2_XPoints(XPoint * dest,int num,const Point2d * vec, const Point2d & point) const { for (int i= 0; i<num; i++) copy_2_XPoint(dest[i],vec[i]); copy_2_XPoint(dest[num],point);}void DisplayX11::copy_2_XSegments(XSegment * dest,int num, const Line2d * vec) const { for (int i= 0; i<num; i++) copy_2_XSegment(dest[i],vec[i]);}void DisplayX11::copy_2_XArcs(XArc * dest,int num, const Circle2d * vec) const { for (int i= 0; i<num; i++) copy_2_XArc(dest[i],vec[i]);}void DisplayX11::copy_2_XArcs(XArc * dest,int num,const CircleArc2d * vec) const { for (int i= 0; i<num; i++) copy_2_XArc(dest[i],vec[i]);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -