⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coder.h

📁 robocup rcssmonitor-11.1.1.zip
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 1999 - 2001, Artur Merke <amerke@ira.uka.de> * * This file is part of FrameView2d. * * FrameView2d is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * FrameView2d is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FrameView2d; see the file COPYING.  If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */#ifndef _CODER_H_#define _CODER_H_#include "rgbcolor.h"#include "vector2d.h"#include "object2d.h"#include "multi.h"#include "rwbin.h"#include "builder_base.h"inline void wbin(std::ostream& o, const RGBcolor& col) {  wbin(o, col.red);  wbin(o, col.green);  wbin(o, col.blue);}inline void rbin(std::istream& i,RGBcolor& col) {  rbin(i, col.red);  rbin(i, col.green);  rbin(i, col.blue);}inline void wbin(std::ostream& o, const Angle& ang) {  wbin(o, ang.get_value());}inline void rbin(std::istream& i, Angle& ang) {  double d;  rbin(i, d);  ang= Angle(d);}inline void wbin(std::ostream& o, const Point2d& p) {  wbin(o, p.x);  wbin(o, p.y);}inline void rbin(std::istream& i,Point2d& p) {  rbin(i, p.x);  rbin(i, p.y);}inline void wbin(std::ostream& o, const Line2d& line) {  wbin(o, line.p1);  wbin(o, line.p2);}inline void rbin(std::istream& i,Line2d& line) {  rbin(i, line.p1);  rbin(i, line.p2);}inline void wbin(std::ostream& o, const Circle2d& circ) {  wbin(o, circ.center);  wbin(o, circ.radius);}inline void rbin(std::istream& i, Circle2d& circ) {  rbin(i, circ.center);  rbin(i, circ.radius);}inline void wbin(std::ostream& o, const CircleArc2d& circ) {  wbin(o, circ.center);  wbin(o, circ.radius);  wbin(o, circ.ang1);  wbin(o, circ.ang2);}inline void rbin(std::istream& i, CircleArc2d& circ) {  rbin(i, circ.center);  rbin(i, circ.radius);  rbin(i, circ.ang1);  rbin(i, circ.ang2);}template<class T>inline void wbin(std::ostream& o, const Multi<T>& mult) {  wbin(o, mult.cur_size);  for (int k=0; k< mult.cur_size; k++)    wbin(o, mult.tab[k]);}template<class T>inline void rbin(std::istream& i, Multi<T>& mult) {  int dum;  rbin(i, dum);  if (i.fail()) return;  mult.cur_size= dum;  if (mult.cur_size>mult.max_size) {    if (mult.tab) delete[] mult.tab;    mult.max_size= mult.cur_size;    mult.tab= new T[mult.max_size];  }  for (int k=0; k<mult.cur_size; k++)    rbin(i, mult.tab[k]);}class EnDeCoderBin {public:    bool build_from_binary(BuilderBase * build, std::istream & in);    static const int cmd_insert_frame;    static const int cmd_insert_point;    static const int cmd_insert_points;    static const int cmd_insert_line;    static const int cmd_insert_lines;    static const int cmd_insert_circle;    static const int cmd_insert_circles;    static const int cmd_insert_f_circle; //f means filled    static const int cmd_insert_f_circles; //f means filled    static const int cmd_insert_circlearc;    static const int cmd_insert_circlearcs;    static const int cmd_insert_f_circlearc;    static const int cmd_insert_f_circlearcs;    static const int cmd_insert_polyline;    static const int cmd_insert_polygon;    static const int cmd_insert_f_polygon;    static const int cmd_insert_string;    static const int cmd_set_object_visible;    static const int cmd_set_object_layer;    static const int cmd_set_object_color;    static const int cmd_set_frame_visible;    static const int cmd_set_frame_layer;    static const int cmd_set_frame_pos;    static const int cmd_set_frame_ang;    static const int cmd_set_frame_pos_ang;    static const int cmd_remove_frame;    static const int cmd_remove_object;    static const int cmd_empty_frame;/*   static const int cmd_rotate_frame       = 10; *//*   static const int cmd_translate_frame    = 11; */  bool get_cmd_type(std::istream &i,int &cmd) {    rbin(i,cmd);    return !i.eof();  }  ////  bool set_cmd_insert_frame(std::ostream &o, int parent_frame,int this_frame,			    const Point2d& pos , const Angle& ang, int layer) {    wbin(o,cmd_insert_frame); wbin(o,parent_frame); wbin(o,this_frame); wbin(o,pos); wbin(o, ang); wbin(o,layer);    return !o.fail();  }  bool get_cmd_insert_frame(std::istream &i,int & parent_frame,int & this_frame,			    Point2d& pos, Angle& angle,int & layer) {    rbin(i,parent_frame); rbin(i,this_frame); rbin(i,pos); rbin(i, angle); rbin(i,layer);    return !i.fail();  }  ////  bool set_cmd_insert_point(std::ostream &o, int parent_frame, int this_object,			    const Point2d& obj, int layer, const RGBcolor &col) {    wbin(o,cmd_insert_point); wbin(o,parent_frame); wbin(o,this_object); wbin(o,obj); wbin(o,layer); wbin(o,col);    return !o.fail();  }  bool get_cmd_insert_point(std::istream &i,int & parent_frame,int & this_object,			    Point2d& obj,int & layer, RGBcolor & col) {    rbin(i,parent_frame); rbin(i,this_object); rbin(i,obj); rbin(i,layer); rbin(i,col);    return !i.fail();  }  bool set_cmd_insert_points(std::ostream &o,int parent_frame,int this_object,			     const Multi<Point2d>& mul,int layer, const RGBcolor &col) {    wbin(o,cmd_insert_points); wbin(o,parent_frame); wbin(o,this_object); wbin(o,mul); wbin(o,layer); wbin(o,col);    return !o.fail();  }  bool get_cmd_insert_points(std::istream &i,int & parent_frame,int & this_object,			     Multi<Point2d>& mul,int & layer, RGBcolor & col) {    rbin(i,parent_frame); rbin(i,this_object); rbin(i,mul); rbin(i,layer); rbin(i,col);    return !i.fail();  }  ////  bool set_cmd_insert_line(std::ostream &o, int parent_frame, int this_object,			    const Line2d& obj, int layer, const RGBcolor &col) {    wbin(o,cmd_insert_line); wbin(o,parent_frame); wbin(o,this_object); wbin(o,obj); wbin(o,layer); wbin(o,col);    return !o.fail();  }  bool get_cmd_insert_line(std::istream &i,int & parent_frame,int & this_object,			    Line2d& obj,int & layer, RGBcolor & col) {    rbin(i,parent_frame); rbin(i,this_object); rbin(i,obj); rbin(i,layer); rbin(i,col);    return !i.fail();  }  bool set_cmd_insert_lines(std::ostream &o,int parent_frame,int this_object,			     const Multi<Line2d>& mul,int layer, const RGBcolor &col) {    wbin(o,cmd_insert_lines); wbin(o,parent_frame); wbin(o,this_object); wbin(o,mul); wbin(o,layer); wbin(o,col);    return !o.fail();  }  bool get_cmd_insert_lines(std::istream &i,int & parent_frame,int & this_object,			     Multi<Line2d>& mul,int & layer, RGBcolor & col) {    rbin(i,parent_frame); rbin(i,this_object); rbin(i,mul); rbin(i,layer); rbin(i,col);    return !i.fail();  }  ////  bool set_cmd_insert_circle(std::ostream &o, int parent_frame, int this_object,			    const Circle2d& obj, int layer, const RGBcolor &col) {    wbin(o,cmd_insert_circle); wbin(o,parent_frame); wbin(o,this_object); wbin(o,obj); wbin(o,layer); wbin(o,col);    return !o.fail();  }  bool get_cmd_insert_circle(std::istream &i,int & parent_frame,int & this_object,			    Circle2d& obj,int & layer, RGBcolor & col) {    rbin(i,parent_frame); rbin(i,this_object); rbin(i,obj); rbin(i,layer); rbin(i,col);    return !i.fail();  }  bool set_cmd_insert_circles(std::ostream &o,int parent_frame,int this_object,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -