Changeset 4028
- Timestamp:
- 08/03/12 15:02:45 (10 months ago)
- Location:
- branches/active/gui_enhancements
- Files:
-
- 8 edited
-
demos/rocket_demo/gui/RML/base_window.rml (modified) (1 diff)
-
demos/rocket_demo/gui/RML/base_window_style.rcss (modified) (1 diff)
-
demos/rocket_demo/gui/RML/slider.rml (modified) (2 diffs)
-
demos/rocket_demo/gui/images/slider_arrow.png (modified) (previous)
-
engine/core/gui/librocket/base/librocketinputprocessor.cpp (modified) (1 diff)
-
engine/core/gui/librocket/base/librocketrenderinterface.cpp (modified) (6 diffs)
-
engine/core/gui/librocket/base/librocketrenderinterface.h (modified) (2 diffs)
-
engine/core/gui/librocket/librocketmanager.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/active/gui_enhancements/demos/rocket_demo/gui/RML/base_window.rml
r4026 r4028 88 88 </head> 89 89 <body class="window" onload="onLoadWindow()"> 90 <handle move_target="#document"> 90 91 <div id="title_bar"> 91 <handle move_target="#document">92 92 <span id="title"></span> 93 </handle>94 93 </div> 94 </handle> 95 95 <div id="empty_area"/> 96 96 <div id="window"> -
branches/active/gui_enhancements/demos/rocket_demo/gui/RML/base_window_style.rcss
r4027 r4028 59 59 width: 100%; 60 60 height: 90%; 61 62 overflow: hidden; 61 63 } 62 64 -
branches/active/gui_enhancements/demos/rocket_demo/gui/RML/slider.rml
r4027 r4028 64 64 top: -2px; 65 65 66 width: 20px;67 height: 20px;66 width: 15px; 67 height: 17px; 68 68 69 69 background-decorator: image; … … 86 86 </script> 87 87 </head> 88 <body id="slider_demo" template="window" onload="onLoadWindow(); setNextPrev(self, prev='form.rml' )">88 <body id="slider_demo" template="window" onload="onLoadWindow(); setNextPrev(self, prev='form.rml', next='textblock.rml')"> 89 89 <span id="value1" class="slider_value">Value: 0%</span> 90 90 <input id="slider1" type="range" min="0" max="100" step="5" ondrag="sliderDragged(self)" /> 91 91 <span id="value2" class="slider_value">Value: 0%</span> 92 <input id="slider2" type="range" min="0" max="100" step=" 5" ondrag="sliderDragged(self)" />92 <input id="slider2" type="range" min="0" max="100" step="1" ondrag="sliderDragged(self)" /> 93 93 </body> 94 94 </rml> -
branches/active/gui_enhancements/engine/core/gui/librocket/base/librocketinputprocessor.cpp
r4016 r4028 178 178 bool LibRocketInputProcessor::processKeyInput(SDL_Event& event) { 179 179 180 uint16_t key = event.key.keysym.unicode; 180 uint16_t unicode = event.key.keysym.unicode; 181 182 Rocket::Core::Input::KeyIdentifier key = m_keyMap[event.key.keysym.sym]; 181 183 182 184 if(event.type == SDL_KEYDOWN) { 183 if(isCharacter(key) || key > 255) { 184 m_context->ProcessTextInput(key); 185 } else { 186 m_context->ProcessKeyDown(m_keyMap[event.key.keysym.sym], m_keyModState); 185 186 m_context->ProcessKeyDown(key, m_keyModState); 187 188 if(unicode >= 32) { 189 m_context->ProcessTextInput(unicode); 190 } 191 192 if(key == Rocket::Core::Input::KI_RETURN) { 193 m_context->ProcessTextInput((Rocket::Core::word) '\n'); 187 194 } 188 195 } else { -
branches/active/gui_enhancements/engine/core/gui/librocket/base/librocketrenderinterface.cpp
r4010 r4028 38 38 : 39 39 m_renderBackend(RenderBackend::instance()), 40 m_imageManager(ImageManager::instance()) { 40 m_imageManager(ImageManager::instance()), 41 m_pushedClipArea(false) { 41 42 } 42 43 … … 46 47 47 48 void LibRocketRenderInterface::RenderGeometry(Rocket::Core::Vertex* vertices, int num_vertices, int* indices, int num_indices, Rocket::Core::TextureHandle texture, const Rocket::Core::Vector2f& translation) { 48 GeometryCallData geometryCallData;49 49 50 geometryCallData.vertices.reserve(num_vertices);50 std::vector<GuiVertex> vecVertices; 51 51 for(int i = 0; i < num_vertices; i++) { 52 52 GuiVertex vertex; … … 56 56 vertex.texCoords.set(vertices[i].tex_coord.x, vertices[i].tex_coord.y); 57 57 58 geometryCallData.vertices.push_back(vertex);58 vecVertices.push_back(vertex); 59 59 } 60 60 61 geometryCallData.indices.reserve(num_indices);61 std::vector<int> vecIndices; 62 62 for(int i = 0; i < num_indices; i++) { 63 geometryCallData.indices.push_back(indices[i]);63 vecIndices.push_back(indices[i]); 64 64 } 65 65 66 geometryCallData.textureHandle = texture; 67 geometryCallData.translation.set(translation.x, translation.y); 66 DoublePoint translationPoint(translation.x, translation.y); 68 67 69 if(m_geometryCalls.empty()) { 70 GeometryCall geometryCall; 71 72 geometryCall.callChain.push(geometryCallData); 73 m_geometryCalls.push(geometryCall); 74 } else { 75 GeometryCall& geometryCall = m_geometryCalls.front(); 76 77 geometryCall.callChain.push(geometryCallData); 78 } 68 ImagePtr img = m_imageManager->get(texture); 69 70 m_renderBackend->renderGuiGeometry(vecVertices, vecIndices, translationPoint, img); 79 71 } 80 72 … … 97 89 98 90 void LibRocketRenderInterface::SetScissorRegion(int x, int y, int width, int height) { 99 GeometryCall gc; 91 if(m_pushedClipArea) 92 m_renderBackend->popClipArea(); 100 93 101 gc.hasScissorArea = true;102 gc.scissorArea = Rect(x, y, width, height);103 m_ geometryCalls.push(gc);94 m_renderBackend->pushClipArea(Rect(x, y, width, height), false); 95 96 m_pushedClipArea = true; 104 97 } 105 98 … … 136 129 m_freedTextures.push_back(rh); 137 130 } 138 139 void LibRocketRenderInterface::render() { 140 while(!m_geometryCalls.empty()) { 141 GeometryCall& geometryCall = m_geometryCalls.front(); 142 143 if(geometryCall.hasScissorArea) 144 m_renderBackend->pushClipArea(geometryCall.scissorArea, false); 145 146 while(!geometryCall.callChain.empty()) { 147 GeometryCallData& geometryCallData = geometryCall.callChain.front(); 148 149 ImagePtr img = m_imageManager->get(geometryCallData.textureHandle); 150 151 m_renderBackend->renderGuiGeometry(geometryCallData.vertices, geometryCallData.indices, geometryCallData.translation, img); 152 153 geometryCall.callChain.pop(); 154 } 155 156 if(geometryCall.hasScissorArea) 157 m_renderBackend->popClipArea(); 158 159 m_geometryCalls.pop(); 160 } 161 } 162 131 163 132 void LibRocketRenderInterface::freeTextures() { 164 133 std::list<ResourceHandle>::iterator it(m_freedTextures.begin()); … … 174 143 m_freedTextures.swap(temp); 175 144 } 145 146 void LibRocketRenderInterface::reset() { 147 m_pushedClipArea = false; 148 } 176 149 }; -
branches/active/gui_enhancements/engine/core/gui/librocket/base/librocketrenderinterface.h
r4010 r4028 94 94 virtual void ReleaseTexture(Rocket::Core::TextureHandle texture_handle); 95 95 96 /** 97 * Renders librocket gui. 98 */ 99 void render(); 100 101 /** 102 * Frees all textures that are no longer needed by librocket. 96 /** Frees all textures that are no longer needed by librocket. 103 97 */ 104 98 void freeTextures(); 99 100 /** Resets the render interface. 101 */ 102 void reset(); 105 103 106 104 private: … … 110 108 ImageManager* m_imageManager; 111 109 112 class GeometryCallData { 113 public: 114 std::vector<GuiVertex> vertices; 115 std::vector<int> indices; 116 ResourceHandle textureHandle; 117 DoublePoint translation; 118 }; 119 120 typedef std::queue<GeometryCallData> GeometryCallDataChain; 121 122 class GeometryCall { 123 public: 124 125 GeometryCall() : hasScissorArea(false) { } 126 127 GeometryCallDataChain callChain; 128 Rect scissorArea; 129 bool hasScissorArea; 130 }; 131 132 std::queue<GeometryCall> m_geometryCalls; 110 bool m_pushedClipArea; 133 111 134 112 std::list<ResourceHandle> m_freedTextures; -
branches/active/gui_enhancements/engine/core/gui/librocket/librocketmanager.cpp
r4021 r4028 83 83 m_context->Render(); 84 84 85 m_renderInterface->render();86 85 m_renderInterface->freeTextures(); 86 m_renderInterface->reset(); 87 87 } 88 88
Note: See TracChangeset
for help on using the changeset viewer.
