From 23011aacc067953b6d0d4bd1fd245eea42355447 Mon Sep 17 00:00:00 2001 From: Savanni D'Gerinel Date: Tue, 18 Apr 2023 09:56:35 -0400 Subject: [PATCH] Add the CodingTogether hashtag --- cyberpunk-splash/src/main.rs | 130 +++++++++++++++++++---------------- 1 file changed, 69 insertions(+), 61 deletions(-) diff --git a/cyberpunk-splash/src/main.rs b/cyberpunk-splash/src/main.rs index 6bc440d..0e188cb 100644 --- a/cyberpunk-splash/src/main.rs +++ b/cyberpunk-splash/src/main.rs @@ -161,48 +161,86 @@ impl SplashPrivate { let _ = context.paint(); context.select_font_face("Alegreya Sans SC", FontSlant::Normal, FontWeight::Bold); - context.set_font_size(128.); - - let center_x = *self.width.borrow() as f64 / 2.; - let center_y = *self.height.borrow() as f64 / 2.; - - let title_extents = context.text_extents(&self.text.borrow()).unwrap(); - let title_width = title_extents.width(); - let title_height = title_extents.height(); { - let start_length = center_x - title_width / 2. - title_height - 20.; + context.set_source_rgb(0.7, 0., 1.); - let title_cutout = AsymLineCutout { + let hashtag = "#CodingTogether"; + context.set_font_size(64.); + let extents = context.text_extents(hashtag).unwrap(); + + context.move_to(20., extents.height() + 40.); + let _ = context.show_text(hashtag); + + AsymLine { + orientation: gtk::Orientation::Horizontal, + start_x: 10., + start_y: extents.height() + 10., + start_length: 0., + height: extents.height() / 2., + total_length: extents.width() + extents.height() / 2., + invert: false, + } + .draw(&pen); + pen.stroke(); + + AsymLine { orientation: gtk::Orientation::Horizontal, start_x: 20., - start_y: center_y - 20. - title_height / 2., - start_length, - total_length: *self.width.borrow() as f64 - 120., - cutout_length: title_width, - height: title_height, + start_y: extents.height() + 60., + start_length: extents.width(), + height: extents.height() / 2., + total_length: extents.width() + extents.height() / 2., invert: false, - }; - - title_cutout.draw(&pen); + } + .draw(&pen); pen.stroke(); } { - let title_baseline_x = center_x - title_width / 2.; - let title_baseline_y = center_y - 20.; + context.set_font_size(128.); - let gradient = LinearGradient::new( - title_baseline_x, - title_baseline_y - title_height, - title_baseline_x, - title_baseline_y, - ); - gradient.add_color_stop_rgb(0.2, 0.7, 0.0, 1.0); - gradient.add_color_stop_rgb(0.8, 0.2, 0.0, 1.0); - context.move_to(title_baseline_x, title_baseline_y); - let _ = context.set_source(gradient); - let _ = context.show_text(&self.text.borrow()); + let center_x = *self.width.borrow() as f64 / 2.; + let center_y = *self.height.borrow() as f64 / 2.; + + let title_extents = context.text_extents(&self.text.borrow()).unwrap(); + let title_width = title_extents.width(); + let title_height = title_extents.height(); + + { + let start_length = center_x - title_width / 2. - title_height - 20.; + + let title_cutout = AsymLineCutout { + orientation: gtk::Orientation::Horizontal, + start_x: 20., + start_y: center_y - 20. - title_height / 2., + start_length, + total_length: *self.width.borrow() as f64 - 120., + cutout_length: title_width, + height: title_height, + invert: false, + }; + + title_cutout.draw(&pen); + pen.stroke(); + } + + { + let title_baseline_x = center_x - title_width / 2.; + let title_baseline_y = center_y - 20.; + + let gradient = LinearGradient::new( + title_baseline_x, + title_baseline_y - title_height, + title_baseline_x, + title_baseline_y, + ); + gradient.add_color_stop_rgb(0.2, 0.7, 0.0, 1.0); + gradient.add_color_stop_rgb(0.8, 0.2, 0.0, 1.0); + context.move_to(title_baseline_x, title_baseline_y); + let _ = context.set_source(gradient); + let _ = context.show_text(&self.text.borrow()); + } } { @@ -490,36 +528,6 @@ impl AsymLine { } } -struct RoundedRectangle { - x: f64, - y: f64, - width: f64, - height: f64, -} - -impl RoundedRectangle { - fn draw(&self, context: &Context) { - context.arc( - self.x, - self.y - self.height / 2., - self.height / 2., - 0.5 * std::f64::consts::PI, - 1.5 * std::f64::consts::PI, - ); - let _ = context.fill(); - context.arc( - self.x + self.width, - self.y - self.height / 2., - self.height / 2., - 1.5 * std::f64::consts::PI, - 0.5 * std::f64::consts::PI, - ); - let _ = context.fill(); - context.rectangle(self.x, self.y, self.width, -self.height); - let _ = context.fill(); - } -} - struct SlashMeter { orientation: gtk::Orientation, start_x: f64,