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

📄 dataview.hpp

📁 模糊聚類分析源碼。包含教學文件
💻 HPP
字号:
/*    Context       : Graphic Display Utility Functions  Author        : Frank Hoeppner, see also AUTHORS file   Description   : header of class DataView                    History       : see source file  Comment       :     This file was generated automatically. DO NOT EDIT.  Copyright     : Copyright (C) 1999-2000 Frank Hoeppner    This program 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 of the License, or    (at your option) any later version.    This program 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 this program; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#ifndef DataView_HEADER#define DataView_HEADER/* configuration include */#ifdef HAVE_CONFIG_H/*//FILETREE_IFDEF HAVE_CONFIG_H*/#include "config.h"/*//FILETREE_ENDIF*/#endif// necessary includes#include <map.h>#ifdef __BORLANDC__#include <strstrea.h>#else#include <strstream.h>#endif#include <iomanip.h>#include "display.hpp"#include "Box.hpp"#include "Tuple.hpp"//#define INLINE inline// global types, constants, definitionsenum ButtonState { ButtonOn,ButtonOff,ButtonPassive };#define DATAVIEW_MENUSPACE 2#define DATAVIEW_TEXTSPACE 2#define DATAVIEW_MENUFRAME 4#define LEFT lowerBound(0)#define TOP lowerBound(1)#define RIGHT upperBound(0)#define BOTTOM upperBound(1)#define DATAVIEW_AXIS_X 0#define DATAVIEW_AXIS_Y 1#define DATAVIEW_AXIS_Z 2#define DATAVIEW_AXIS_T 3#define DATAVIEW_AXIS_AZIMUTH 0#define DATAVIEW_AXIS_ELEVATION 1#define DATAVIEW_AXIS_TWIST 2#define DATAVIEW_AXIS_DISTANCE 3// class definitiontemplate <class DATA>class DataView    {    public:    typedef Tuple<2,int> MenuCoord;    typedef Tuple<4,float> DispCoord;    typedef Box< MenuCoord > Rectangle;    typedef Box< DispCoord > BBox4D;    DataView();    virtual ~DataView();    void registrate_button(int,int,int,int,const char*,ButtonState,int);    void registrate_button_handler(void (*)(int));    ButtonState& application_button_state(int);    void registrate_display_func(void (*f)());    void registrate_time_handler(void (*f)(float));    void registrate_exit_handler(void (*f)());    void display_point(const DATA& d,float r);    void display_disc(const DATA& d,float r);    void display_ball(const DATA& d,float r);    void display_line(const DATA& s,const DATA& f,float r);    void display_cylinder(const DATA& s,const DATA& f,float r);    void display(int,int,char*);    void notify_size(const DATA&);    void set_focus(const DATA&);    void set_red(const DATA&);    void set_green(const DATA&);    void set_blue(const DATA&);    void reset_bbox();      protected:        void statistics();    void mouse_move(int,int);    void mouse_click(int,int,int,int);    void evaluate_display_menu_click(int b);    void display();    static void display_call() { p_DV->display(); }    static void mouse_click_call(int b,int s,int x,int y) { p_DV->mouse_click(b,s,x,y); }    static void mouse_move_call(int x,int y) { p_DV->mouse_move(x,y); }    struct Button      {      Button() { MenuCoord C; C(0)=C(1)=0; area.include(C); }      Button(int x,int y,int dx, int dy, const char* t,ButtonState s,int id)        : area( MenuCoord(x,y), MenuCoord(x+dx,y+dy)), title(t), state(s), idno(id)              {}      Button(const Button& B)        : area(B.area), title(B.title), state(B.state), idno(B.idno)         {}      Rectangle area;      const char* title;      ButtonState state;        int idno;      };    typedef map<int, Button, less<int> > ButtonMap;    class Menu      {      public:        Menu() {}        ~Menu() {}        void add(const Button&);        int evaluate_click(int, int);        void display(int&,int&);        ButtonMap m_buttons;        Rectangle m_bbox;      };            int data_size;    bool displayAppMenu;    bool displayDispMenu;    bool perspectiveView;    bool statisticsView;    bool estimateBoundBox;    int controlMode;    int x_mouse_move;    int y_mouse_move;    int x_mouse_click_down;    int y_mouse_click_down;    int mouse_button;    DispCoord view_coord;    DispCoord focus_coord;    DispCoord red_coord;    DispCoord blue_coord;    DispCoord green_coord;    DispCoord* cart_coord;    DispCoord scalefac;    #define DISPLAY_SCALE_OUTPUT_LENGTH 5    char scaletext[4][DISPLAY_SCALE_OUTPUT_LENGTH+1];    int axis[4]; // display indices    int cartesian[4]; // cartesian control    int rotate[4]; // rotating control    int xDispMenu;    int yDispMenu;    int xAppMenu;    int yAppMenu;    Menu appMenu;    Menu dispMenu;      BBox4D boundBox;    int sensitivityGrade;    float sensitivity;    void (*appButtonHandler)(int);    void (*appTimeHandler)(float);    void (*appDisplayFunc)();    void (*appExitHandler)();     static DataView *p_DV;  private:        inline void convert_coord(const DATA& ar_DataVector, DispCoord& ar_Coord)      {       int a;      for (a=0;a<3;++a)         {        if (axis[a]>=0)           {          ar_Coord(a) = ar_DataVector.operator()(axis[a]);          }        }        }    inline void display_point_intern(const DispCoord& arc,float r)      {       ::display_point        (             arc(DATAVIEW_AXIS_X),             arc(DATAVIEW_AXIS_Y),             arc(DATAVIEW_AXIS_Z),        r             );      }    inline void display_line_intern(const DispCoord& arc1,const DispCoord& arc2,float r)      {       ::display_line        (             arc1(DATAVIEW_AXIS_X),             arc1(DATAVIEW_AXIS_Y),             arc1(DATAVIEW_AXIS_Z),             arc2(DATAVIEW_AXIS_X),             arc2(DATAVIEW_AXIS_Y),             arc2(DATAVIEW_AXIS_Z),        r             );      }          };// class related functions and definitions/* inline implementation */#endif // DataView_HEADER

⌨️ 快捷键说明

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