Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_GUI_WEBGADGET_H__
00009 #define __SP_GUI_WEBGADGET_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013
00014 #ifdef SP_COMPILE_WITH_GUI
00015
00016
00017 #include "GUI/spGUIGadget.hpp"
00018 #include "GUI/spGUIScrollViewBased.hpp"
00019 #include "Framework/Tools/spToolXMLParser.hpp"
00020
00021 #include <map>
00022
00023
00024 namespace sp
00025 {
00026 namespace gui
00027 {
00028
00029
00035 class SP_EXPORT GUIWebGadget : public GUIGadget, public GUIScrollViewBased
00036 {
00037
00038 public:
00039
00040 GUIWebGadget();
00041 ~GUIWebGadget();
00042
00043
00044
00045 bool update();
00046 void draw();
00047
00048 dim::rect2di getLocalViewArea(const GUIController* Obj = 0) const;
00049
00055 void loadContent(const tool::SXMLTag &XMLMainBlock, const s32 ContentWidth = 512);
00056
00058 void loadContent(const io::stringc &Filename, const s32 ContentWidth = 512);
00059
00060
00061
00063 inline video::Texture* getContentTexture() const
00064 {
00065 return ContentTex_;
00066 }
00067
00068 private:
00069
00070
00071
00072 static const s32 TEXT_DISTANCE = 5;
00073
00074
00075
00076 struct SXMLFontKey
00077 {
00078 SXMLFontKey() :
00079 Size (0),
00080 Flags (0)
00081 {
00082 }
00083 ~SXMLFontKey()
00084 {
00085 }
00086
00087
00088 bool operator < (const SXMLFontKey &other) const
00089 {
00090 return
00091 Size < other.Size ||
00092 Flags < other.Flags ||
00093 Color.Red < other.Color.Red ||
00094 Color.Green < other.Color.Green ||
00095 Color.Blue < other.Color.Blue ||
00096 Color.Alpha < other.Color.Alpha ||
00097 Name.str() < other.Name.str();
00098 }
00099
00100
00101 io::stringc Name;
00102 video::color Color;
00103 s32 Size;
00104 s32 Flags;
00105 };
00106
00107 struct SXMLFont
00108 {
00109 SXMLFont() :
00110 Object (0),
00111 Color (0),
00112 Size (0),
00113 Flags (0)
00114 {
00115 }
00116
00117
00118 video::Font* Object;
00119 io::stringc Name;
00120 video::color Color;
00121 s32 Size;
00122 s32 Flags;
00123 };
00124
00125
00126
00127 void createWebsiteContent(const tool::SXMLTag &Block);
00128
00129 void deleteLoadedResources();
00130
00131 void setFont(const io::stringc &Name, s32 Size, const video::color &Color, s32 Flags = 0);
00132
00133 video::color getHexColor(const io::stringc &HexStr) const;
00134 u8 getHexComponent(c8 c0, c8 c1) const;
00135
00136
00137
00138 video::Texture* ContentTex_;
00139
00140 std::map<SXMLFontKey, SXMLFont> FontMap_;
00141 SXMLFont CurFont_;
00142 s32 DrawnFontSize_;
00143
00144 s32 ContentWidth_;
00145 dim::point2di DrawPos_;
00146
00147 };
00148
00149
00150 }
00151
00152 }
00153
00154
00155 #endif
00156
00157 #endif
00158
00159
00160
00161