- Timestamp:
- 09/02/14 03:38:18 (11 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/nv/core/position.hh
r319 r328 197 197 */ 198 198 rectangle shrinked( int value ) { position p(value,value); return rectangle(ul+p, lr-p); } 199 199 200 rectangle shrinked( dimension value ) { return rectangle(ul+value, lr-value); } 201 200 202 /** 201 203 * Shifts the rectangle by a given amount. -
trunk/nv/gui/gui_renderer.hh
r319 r328 40 40 }; 41 41 42 struct image_info 43 { 44 vec2 t1; 45 vec2 t2; 46 ivec2 size; 47 48 image_info() {} 49 image_info( const nv::vec2 tex1, const nv::vec2 tex2, const nv::ivec2 s ) 50 : t1( tex1 ), t2( tex2 ), size( s ) {} 51 }; 52 42 53 class renderer 43 54 { … … 45 56 renderer( window* w ); 46 57 texture_font* get_font( size_t name ) const; 47 vec4get_image( size_t name ) const;58 const image_info* get_image( size_t name ) const; 48 59 void load_style( const std::string& filename ); 49 60 size_t load_font( const std::string& filename, size_t size ); … … 56 67 typedef std::unordered_map< std::string, size_t > names; 57 68 typedef std::vector< texture_font* > font_vector; 58 typedef std::vector< vec4 >image_vector;69 typedef std::vector< image_info > image_vector; 59 70 60 71 context* m_context; -
trunk/src/gui/gui_renderer.cc
r322 r328 38 38 "}\n"; 39 39 40 40 41 using namespace nv; 41 42 using namespace nv::gui; 43 44 const ivec2 atlas_size = ivec2( 1024, 1024 ); 42 45 43 46 struct gui_quad … … 121 124 : m_window(w) 122 125 , m_style() 123 , m_atlas( glm::ivec2( 1024, 1024 ), 4 )126 , m_atlas( atlas_size, 4 ) 124 127 , m_reupload( true ) 125 128 { … … 164 167 } 165 168 166 nv::vec4renderer::get_image( size_t name ) const167 { 168 if ( name >= m_images.size() ) return n v::vec4();169 return m_images[ name ];169 const image_info* renderer::get_image( size_t name ) const 170 { 171 if ( name >= m_images.size() ) return nullptr; 172 return &m_images[ name ]; 170 173 } 171 174 … … 201 204 region r = m_atlas.get_region( data->get_size() ); 202 205 m_atlas.set_region( r, data->get_data() ); 206 m_images.emplace_back( vec2( r.pos ) / vec2( atlas_size ), vec2( r.size + r.pos ) / vec2( atlas_size ), r.size ); 203 207 delete data; 204 208 m_reupload = true; … … 228 232 if ( e->m_absolute != m_area ) 229 233 { 230 int border ;234 int border = 0; 231 235 vec4 color; 232 236 std::string path; 233 237 std::string text; 234 if ( m_style.get( e, "border", border ) && m_style.get( e, "border_color", color ) ) 238 239 if ( m_style.get( e, "skin", path ) ) 235 240 { 236 rectangle inner = abs.shrinked( border ); 237 qvec.emplace_back( abs.ul, inner.ul, inner.ur(), abs.ur(), color ); 238 qvec.emplace_back( abs.ul, abs.ll(), inner.ll(), inner.ul, color ); 239 qvec.emplace_back( inner.ur(), inner.lr, abs.lr, abs.ur(), color ); 240 qvec.emplace_back( inner.ll(), abs.ll(), abs.lr, inner.lr, color ); 241 abs = inner; 241 size_t image_id = load_image( path ); 242 const image_info* image = get_image( image_id ); 243 if ( image ) 244 { 245 color = vec4( 2, 2, 2, 1 ); 246 ivec2 isize3 = image->size / 3; 247 ivec2 isize3x = ivec2( isize3.x, 0 ); 248 ivec2 isize3y = ivec2( 0, isize3.y ); 249 vec2 tsize = ( image->t2 - image->t1 ); 250 vec2 tsize3 = ( image->t2 - image->t1 ) / 3.0f; 251 vec2 tsize32 = ( image->t2 - image->t1 ) * ( 2.0f / 3.0f ); 252 vec2 tsizex = vec2( tsize.x, 0.0f ); 253 vec2 tsizey = vec2( 0.0f, tsize.y ); 254 vec2 tsize3x = vec2( tsize3.x, 0.0f ); 255 vec2 tsize3y = vec2( 0.0f, tsize3.y ); 256 vec2 tsize3x2 = vec2( tsize32.x, 0.0f ); 257 vec2 tsize3y2 = vec2( 0.0f, tsize32.y ); 258 259 rectangle inner = abs.shrinked( isize3 ); 260 qvec.emplace_back( abs.ul, inner.ul, color, image->t1, image->t1+tsize3 ); 261 qvec.emplace_back( abs.ul+isize3x, inner.ur(), color, image->t1+tsize3x, image->t1+tsize3x2+tsize3y); 262 qvec.emplace_back( abs.ur()-isize3x, inner.ur()+isize3x, color, image->t1+tsize3x2, image->t1+tsizex+tsize3y ); 263 264 qvec.emplace_back( abs.ul+isize3y, inner.ll(), color, image->t1+tsize3y, image->t1+tsize3y2+tsize3x ); 265 qvec.emplace_back( inner.ul, inner.lr, color, image->t1+tsize3, image->t1+tsize32 ); 266 qvec.emplace_back( inner.ur(), inner.lr+isize3x, color, image->t1+tsize3+tsize3x, image->t1+tsize32+tsize3x ); 267 268 269 qvec.emplace_back( abs.ll()-isize3y, inner.ll()+isize3y, color, image->t1+tsize3y2, image->t1+tsize3y2+tsize3 ); 270 qvec.emplace_back( inner.ll(), abs.lr-isize3x, color, image->t1+tsize3y2+tsize3x, image->t1+tsize32+tsize3y ); 271 qvec.emplace_back( inner.lr, abs.lr, color, image->t1+tsize32, image->t1+tsize ); 272 273 274 // qvec.emplace_back( abs.ul, abs.ll(), inner.ll(), inner.ul, color ); 275 // qvec.emplace_back( inner.ur(), inner.lr, abs.lr, abs.ur(), color ); 276 // qvec.emplace_back( inner.ll(), abs.ll(), abs.lr, inner.lr, color ); 277 abs = inner; 278 279 } 280 242 281 } 243 244 if ( m_style.get( e, "background_color", color ) ) 282 else 245 283 { 246 qvec.emplace_back( abs.ul, abs.lr, color ); 284 285 if ( m_style.get( e, "border", border ) && m_style.get( e, "border_color", color ) ) 286 { 287 rectangle inner = abs.shrinked( border ); 288 qvec.emplace_back( abs.ul, inner.ul, inner.ur(), abs.ur(), color ); 289 qvec.emplace_back( abs.ul, abs.ll(), inner.ll(), inner.ul, color ); 290 qvec.emplace_back( inner.ur(), inner.lr, abs.lr, abs.ur(), color ); 291 qvec.emplace_back( inner.ll(), abs.ll(), abs.lr, inner.lr, color ); 292 abs = inner; 293 } 294 295 if ( m_style.get( e, "background_color", color ) ) 296 { 297 qvec.emplace_back( abs.ul, abs.lr, color ); 298 } 247 299 } 248 300 -
trunk/tests/gui_test/gui_test.lua
r321 r328 4 4 includedirs { "../../" } 5 5 targetname "nv_gui_test" 6 links { "nv-core", "nv-gl", "nv-gui" }6 links { "nv-core", "nv-gl", "nv-gui", "nv-sdl" } 7 7 targetdir "../../bin" 8 8 -
trunk/tests/gui_test/nv_gui_test.cc
r321 r328 1 1 #include <nv/gl/gl_device.hh> 2 2 #include <nv/gui/gui_environment.hh> 3 #include <nv/sdl/sdl_window_manager.hh> 3 4 #include <nv/interface/context.hh> 5 #include <nv/interface/window_manager.hh> 4 6 #include <nv/core/logging.hh> 5 7 #include <nv/core/logger.hh> … … 18 20 ~application(); 19 21 protected: 22 nv::window_manager* m_wm; 20 23 nv::device* m_device; 21 24 nv::window* m_window; … … 28 31 { 29 32 m_device = new nv::gl_device(); 30 m_window = m_device->create_window( 800, 600, false ); 33 m_wm = new nv::sdl::window_manager; 34 m_window = m_wm->create_window( m_device, 800, 600, false ); 31 35 m_clear_state.buffers = nv::clear_state::COLOR_AND_DEPTH_BUFFER; 32 36 m_guienv = new nv::gui::environment( m_window ); -
trunk/tests/gui_test/test.style.lua
r127 r328 6 6 7 7 window = { 8 border = 2, 9 border_color = { 0.2, 0.2, 0.4, 1.0 }, 8 --border = 2, 9 --border_color = { 0.2, 0.2, 0.4, 1.0 }, 10 skin = "button.png", 10 11 } 11 12 }
Note: See TracChangeset
for help on using the changeset viewer.