00001 #ifndef DRAWABLE_H 00002 #define DRAWABLE_H 00003 00004 #include <iostream> 00005 #include <stdio.h> 00006 #include <stdlib.h> 00007 #include <string.h> 00008 #include "sphere.h" 00009 #include "cylinder.h" 00010 #include "array.cpp" 00011 00012 #ifdef GRAPHICS 00013 #include <FL/Fl.h> 00014 #include <FL/Fl_Window.h> 00015 #include <FL/Fl_Double_Window.h> 00016 #include <FL/Fl_Gl_Window.h> 00017 #include <FL/Fl_Input.h> 00018 #include <FL/Fl_Box.h> 00019 #include <FL/Fl_Choice.h> 00020 #include <FL/fl_ask.h> 00021 #include <FL/fl_draw.h> 00022 #include <FL/fl_file_chooser.h> 00023 #include <FL/Fl_Color_Chooser.H> 00024 #include <FL/Fl_Menu_Bar.h> 00025 #include <FL/Fl_Button.h> 00026 #include <FL/Fl_Menu_Button.h> 00027 #include <FL/Fl_Counter.h> 00028 #endif 00029 00045 class drawable 00046 { 00047 public: 00048 double distance; 00049 int type; 00050 void *object; 00051 00062 template <class T, class S> 00063 static void add ( ap_array<drawable> *objects, 00064 ap_array<sphere<T,S> > *spheres, int is_short=0 ); 00065 00073 template <class T, class S> 00074 static void add ( ap_array<drawable> *objects, 00075 ap_array<gl_cylinder<T,S> > *cylinders, int is_short=0 ); 00076 00093 static void sort ( ap_array<drawable> *objects ); 00094 00098 template <class T, class S> 00099 drawable ( sphere<T,S> *s ) { 00100 type = AP_SPHERE; 00101 object = s; 00102 }; 00103 00107 template <class T, class S> 00108 drawable ( gl_cylinder<T,S> *c ) { 00109 type = AP_CYLINDER; 00110 object = c; 00111 }; 00112 00116 drawable () { 00117 }; 00118 }; 00119 00120 #endif