00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef SETTINGS_H_
00020 #define SETTINGS_H_
00021 #include "PageInfo.h"
00022 #include "goo/gtypes.h"
00023 #include <liberdm/display.h>
00024
00025
00027
00029 #define ZoomPage -1
00030 #define ZoomWidth -2
00031 #define DefZoom 100
00032 #define ZoomMax 350 // should be larger or equal to all ZoomMax
00033 #define ZoomMin 25
00034 #define InvalidPage -1
00035 #define InvalidZoom -100
00036 #define DefDPI 72
00037 #define RenderNext 1
00038 #define RenderPrev -1
00039 #define RenderWidth 5
00040 #define RenderFrom 1 // used by new pre-render scheme
00041 #define TimeOffset 2 // used to protect next/prev pages
00042 #define JumpWidth 5 // long press
00043 #define RemovePages 2 // if memory is not enough, how many pages should be removed
00044 #define SmallOffset 5
00045 #define RectThreshold 25
00046 #define ProtectWidth 5
00047
00048 #define PageBreak 1
00049 #define PageRepeat 20
00050 #define Margin -5
00051
00052 #define SmallWidth 1
00053 #define SmallHeight 2
00054 #define SmallNone 0
00055
00056
00057 #define A0ZoomMax 100
00058 #define A1ZoomMax 100
00059 #define A2ZoomMax 100
00060 #define A3ZoomMax 150
00061 #define A4ZoomMax 200
00062 #define A5ZoomMax 300
00063 #define A6ZoomMax 300
00064 #define A7ZoomMax 300
00065 #define A8ZoomMax 350
00066 #define A9ZoomMax 350
00067
00068
00069 #define ModeContinous 1
00070 #define ModePage 2
00071 #define ModeNewspaper 4 // this two decide pre-render algorithm
00072 #define ModeA4 8 // for A4 pages
00073
00074
00075 #define IPC_BUF_MAX 1024
00076
00077
00078
00079
00080
00081 #define MAXIMUM_MEMORY_LIMIT (50 * 1024 * 1024)
00082
00083
00084 #define HISTORY_DEBUG 0
00085
00086
00087 #define HISTORY_MAX_LENGTH 15
00088
00089 enum ContinousModeScroll
00090 {
00091 ScrollToPage = 0,
00092 ScrollToNextPage = 1,
00093 ScrollToPrevPage = 2,
00094 ScrollToNextPages = 3,
00095 ScrollToPrevPages = 4,
00096 ScrollToPosition = 5,
00097 ScrollRedraw = 6,
00098 };
00099
00100
00101
00102
00103 struct HistoryItem
00104 {
00105 int x;
00106 int y;
00107 int pageNumber;
00108 double zoom;
00109 HistoryItem();
00110 ~HistoryItem();
00111 #if (HISTORY_DEBUG)
00112 static int count;
00113 #endif
00114 };
00115 typedef HistoryItem * HistoryItemPtr;
00116
00118
00119
00120
00121
00123 class CSettings
00124 {
00125 private:
00126 double zoom;
00127 int rotate;
00128 int screenX;
00129 int screenY;
00130 int drawAreaWidth;
00131 int drawAreaHeight;
00132 int currentPage;
00133 int renderDir;
00134 int mode;
00135 int zbState;
00136 GBool enableScb;
00137 GooList backward;
00138 GooList forward;
00139 HistoryItemPtr
00140 currentItem;
00141 HistoryItem record;
00142
00143 private:
00144 void clearHistory();
00145
00146 public:
00147 CSettings(void);
00148 ~CSettings(void);
00149
00150
00151 void setNewZoom(const double z);
00152 GBool zoomBack();
00153 GBool canZoomBack();
00154 int getZoomBackState() const { return zbState; }
00155 void disableZoomBack();
00156 double getZoom() const { return zoom; }
00157 void setZoom(const double z) { zoom = z; }
00158
00159
00160 void load(const char * manifest);
00161 void save(const char * manifest);
00162
00163
00164 int getRotate() const { return rotate; }
00165 void setRotate(const int r) { rotate = r; }
00166
00167
00168 void getScreenRect(rectangle & rect);
00169 int getScreenX() const { return screenX; }
00170 int getScreenY() const { return screenY; }
00171 int getScreenWidth() const { return drawAreaWidth; }
00172 int getScreenHeight() const { return drawAreaHeight; }
00173 void setScreenX(const int x) { screenX = x; }
00174 void setScreenY(const int y) { screenY = y; }
00175 void moveScreenX(const int d) { screenX += d; }
00176 void moveScreenY(const int d) { screenY += d; }
00177 void setScreenPosition(const int , const int);
00178 void setScreenSize(const int, const int);
00179 void setScreenRect(const rectangle & rect);
00180
00181
00182 int getCurrentPage() const { return currentPage; }
00183 void setCurrentPage(const int p);
00184
00185
00186 int getRenderDir() const { return renderDir; }
00187 void setRenderDir(const int d) { renderDir =d ; }
00188
00189
00190 int getMode() const { return mode; }
00191 void setMode(const int m) { mode = m; }
00192
00193
00194 GBool isScribbleEnabled() const { return enableScb; }
00195
00196
00197 void addNewItem(HistoryItemPtr ptr);
00198 void addNewItem(const int page);
00199 HistoryItemPtr goBackward();
00200 HistoryItemPtr goForward();
00201 GBool canGoBack();
00202 GBool canGoForward();
00203
00204 #if (HISTORY_DEBUG)
00205 void dumpHistory();
00206 #endif
00207 };
00208
00209 #endif