00001 #ifndef HW2DBOUNDREADER_H 00002 #define HW2DBOUNDREADER_H 00003 00004 #include "dwf/whiptk/fileext.h" 00005 #include "dwf/whiptk/whiperrs.h" 00006 #include "dwfcore/InputStream.h" 00007 #include "dwf/package/Resource.h" 00008 #include "dwf/package/Section.h" 00009 #include "dwf/dwfx/Constants.h" 00010 #include "dwf/package/EPlotSection.h" 00011 #include "dwf/package/Paper.h" 00012 00013 #include "Access.h" 00014 00015 // A class which reads through 2D DWF and only computes the bounding box 00016 class HW2DBoundReader : public WT_FileExt 00017 { 00018 public: 00019 HW2DBoundReader(DWFInputStream & rW2DStream); 00020 virtual ~HW2DBoundReader() {} 00021 00022 WT_Result read(); 00023 WT_Result process_stream_close() { return WT_Result::Success; } 00024 WT_Result process_stream_end_seek() { return WT_Result::Success; } 00025 WT_Result process_stream_open(); 00026 WT_Result process_stream_read(int desired_bytes, int & bytes_read, void * buffer); 00027 WT_Result process_stream_seek(int distance, int & amount_seeked); 00028 WT_Result process_stream_tell(unsigned long * current_file_pointer_position); 00029 WT_Result process_stream_write(int /*size*/, void const * /*buffer*/) { return WT_Result::Toolkit_Usage_Error; } 00030 00031 static WT_Result _processPolyMarker(WT_Polymarker & /*polymarker*/, WT_File & /*file*/) { return WT_Result::Success; } 00032 static WT_Result _processPolytriangle(WT_Polytriangle & polytriangle, WT_File & file); 00033 static WT_Result _processText(WT_Text & text, WT_File & file); 00034 static WT_Result _processEllipse(WT_Outline_Ellipse & wt_oellipse, WT_File & file); 00035 static WT_Result _processPolyline(WT_Polyline & polyline, WT_File & file); 00036 static WT_Result _processPolygon(WT_Polygon & polygon, WT_File & file); 00037 static WT_Result _processImage(WT_Image & image, WT_File & file); 00038 static WT_Result _processPNG_Group4_Image(WT_PNG_Group4_Image & image, WT_File & file); 00039 static WT_Result _processVisibility(WT_Visibility & visibility, WT_File & file); 00040 00041 WT_Logical_Box m_wtModelBoundingBox; 00042 00043 private: 00044 size_t m_nBytesAvailable; 00045 DWFString m_zContent; 00046 DWFInputStream & m_rW2DStream; 00047 }; 00048 00049 #ifndef DWFIO_SUPPORT_ONLY_LEGACY_VERSIONS 00050 #include "dwf/XAML/XamlFile.h" 00051 00052 class HW2DBoundReaderXaml : public WT_XAML_File //WT_FileExt 00053 { 00054 public: 00055 HW2DBoundReaderXaml(DWFToolkit::DWFResource * pResource, DWFToolkit::DWFSection * pSection); 00056 virtual ~HW2DBoundReaderXaml(); 00057 00058 WT_Result read(); 00059 WT_Result process_stream_close() { return WT_Result::Success; } 00060 WT_Result process_stream_end_seek() { return WT_Result::Success; } 00061 WT_Result process_stream_open(); 00062 WT_Result process_stream_read(int desired_bytes, int & bytes_read, void * buffer); 00063 WT_Result process_stream_seek(int distance, int & amount_seeked); 00064 WT_Result process_stream_tell(unsigned long * current_file_pointer_position); 00065 WT_Result process_stream_write(int /*size*/, void const * /*buffer*/) { return WT_Result::Toolkit_Usage_Error; } 00066 00067 static WT_Result _processPolyMarker(WT_Polymarker & /*polymarker*/, WT_File & /*file*/) { return WT_Result::Success; } 00068 static WT_Result _processPolytriangle(WT_Polytriangle & polytriangle, WT_File & file); 00069 static WT_Result _processText(WT_Text & text, WT_File & file); 00070 static WT_Result _processEllipse(WT_Outline_Ellipse & wt_oellipse, WT_File & file); 00071 static WT_Result _processPolyline(WT_Polyline & polyline, WT_File & file); 00072 static WT_Result _processPolygon(WT_Polygon & polygon, WT_File & file); 00073 static WT_Result _processImage(WT_Image & image, WT_File & file); 00074 static WT_Result _processPNG_Group4_Image(WT_PNG_Group4_Image & image, WT_File & file); 00075 static WT_Result _processVisibility(WT_Visibility & visibility, WT_File & file); 00076 00077 WT_Logical_Box m_wtModelBoundingBox; 00078 00079 private: 00080 size_t m_nBytesAvailable; 00081 DWFString m_zContent; 00082 DWFInputStream * m_rW2DStream; 00083 Access * m_pAccess; 00084 }; 00085 #endif 00086 00087 #endif //HW2DBOUNDREADER_H