11use crate :: canvas:: { CanvasTransform , Uniforms } ;
2- use crate :: drawing:: { DrawingElement , Tool } ;
2+ use crate :: drawing:: { DrawingElement , Style , Tool } ;
33use crate :: state:: {
4- Canvas , GeometryBuffers , GpuContext , InputState , TextInput , UiBuffers ,
5- UiScreenBuffers , UiScreenUniforms , UserInputState :: Idle ,
4+ Canvas , GeometryBuffers , GpuContext , InputState , TextInput , UiBuffers , UiScreenBuffers ,
5+ UiScreenUniforms , UserInputState :: Idle ,
66} ;
77use crate :: text_renderer:: TextRenderer ;
88use crate :: ui:: UiRenderer ;
@@ -34,6 +34,7 @@ pub struct State {
3434 pub elements : Vec < DrawingElement > ,
3535 pub current_tool : Tool ,
3636 pub current_color : [ f32 ; 4 ] ,
37+ pub current_style : Style ,
3738 pub stroke_width : f32 ,
3839
3940 pub ui_renderer : UiRenderer ,
@@ -44,7 +45,7 @@ pub struct State {
4445impl State {
4546 pub async fn new ( window : Arc < Window > ) -> State {
4647 let mut size = window. inner_size ( ) ;
47-
48+
4849 #[ cfg( target_arch = "wasm32" ) ]
4950 {
5051 if size. width == 0 || size. height == 0 {
@@ -195,9 +196,7 @@ impl State {
195196
196197 let ui_shader = device. create_shader_module ( wgpu:: ShaderModuleDescriptor {
197198 label : Some ( "UI Shader" ) ,
198- source : wgpu:: ShaderSource :: Wgsl (
199- include_str ! ( "../data/shaders/ui_shader.wgsl" ) . into ( ) ,
200- ) ,
199+ source : wgpu:: ShaderSource :: Wgsl ( include_str ! ( "../data/shaders/ui_shader.wgsl" ) . into ( ) ) ,
201200 } ) ;
202201
203202 let ui_uniform_bind_group_layout =
@@ -311,18 +310,26 @@ impl State {
311310 } ;
312311
313312 let ui_renderer = UiRenderer :: new ( ) ;
314- let text_renderer = TextRenderer :: new ( & gpu. device , & gpu. queue , surface_format, & uniform_bind_group_layout, & ui_uniform_bind_group_layout) ;
313+ let text_renderer = TextRenderer :: new (
314+ & gpu. device ,
315+ & gpu. queue ,
316+ surface_format,
317+ & uniform_bind_group_layout,
318+ & ui_uniform_bind_group_layout,
319+ ) ;
315320
316321 let ui_screen_uniforms = UiScreenUniforms {
317322 screen_size : [ size. width as f32 , size. height as f32 ] ,
318323 _padding : [ 0.0 , 0.0 ] ,
319324 } ;
320325
321- let ui_screen_uniform_buffer = gpu. device . create_buffer_init ( & wgpu:: util:: BufferInitDescriptor {
322- label : Some ( "UI Screen Uniform Buffer" ) ,
323- contents : bytemuck:: cast_slice ( & [ ui_screen_uniforms] ) ,
324- usage : wgpu:: BufferUsages :: UNIFORM | wgpu:: BufferUsages :: COPY_DST ,
325- } ) ;
326+ let ui_screen_uniform_buffer =
327+ gpu. device
328+ . create_buffer_init ( & wgpu:: util:: BufferInitDescriptor {
329+ label : Some ( "UI Screen Uniform Buffer" ) ,
330+ contents : bytemuck:: cast_slice ( & [ ui_screen_uniforms] ) ,
331+ usage : wgpu:: BufferUsages :: UNIFORM | wgpu:: BufferUsages :: COPY_DST ,
332+ } ) ;
326333
327334 let ui_screen_bind_group = gpu. device . create_bind_group ( & wgpu:: BindGroupDescriptor {
328335 layout : & ui_uniform_bind_group_layout,
@@ -338,6 +345,8 @@ impl State {
338345 bind_group : ui_screen_bind_group,
339346 } ;
340347
348+ let current_style = Style :: Solid ;
349+
341350 Self {
342351 window,
343352 size,
@@ -349,15 +358,16 @@ impl State {
349358 typing,
350359 elements : Vec :: new ( ) ,
351360 current_tool : Tool :: Pen ,
352- current_color : [ 0.0 , 0.0 , 0.0 , 1.0 ] ,
361+ current_color : [ 0.0 , 0.0 , 0.0 , 1.0 ] ,
353362 stroke_width : 2.0 ,
354363 ui_renderer,
355364 text_renderer,
356365 ui_screen,
366+ current_style,
357367 }
358368 }
359369
360370 pub fn window ( & self ) -> & Arc < Window > {
361371 & self . window
362372 }
363- }
373+ }
0 commit comments