def internal_render(self, screen): screen.fill(self.BG_COLOR) text_size = 18 lines = self.body_text.split('\n') line_height = get_font(size=text_size).get_linesize() block_height = len(lines) * line_height block_pad = (self.surface.get_height() - block_height) / 2 for k, line in enumerate(lines): label = render_text(line, size=text_size, fg=self.TEXT_COLOR, bg=None) label_pos = ((self.surface.get_width() - label.get_width()) / 2, k * line_height + block_pad) shadow = render_text(line, size=text_size, fg=self.SHADOW_COLOR, bg=None) shadow_pos = (label_pos[0] + 1, label_pos[1] + 1) screen.blits(blit_sequence=((shadow, shadow_pos), (label, label_pos)))
def render(self, screen): screen.fill(self.BG_COLOR) text = render_text('Dashboard pls', size=24, font='./assets/HelveticaNeueBold.ttf', bg=None) screen.blit(text, (0, 0))
def render(self, screen): screen.fill(self.BG_COLOR) text = render_text('SETTINGS', size=16, font='./assets/HelveticaNeue.ttf', bg=None) screen.blit(text, (0, 0))
def internal_render(self): if not self.btn_text == 'OFF': color = self.LINK_HOLD_COLOR if self.pressed else self.LINK_COLOR else: color = (150, 0, 0) if self.pressed else (255, 0, 0) self.surface = render_text(self.btn_text, size=self.size, fg=color, bg=None) self.surface_pressed = self.pressed
def internal_render(self, screen): # Draw button btn_color = self.BTN_HOLD_COLOR if self.pressed else self.BTN_COLOR screen.fill(btn_color) label_size = 24 btn_label = render_text(self.text, size=label_size, bg=None) btn_label_pos = align(btn_label.get_rect(), self.surface.get_rect()) btn_label_shadow = render_text(self.text, size=label_size, fg=(0, 0, 0), bg=None) btn_label_shadow_pos = (btn_label_pos[0] + 1, btn_label_pos[1] + 1) screen.blits(blit_sequence=((btn_label_shadow, btn_label_shadow_pos), (btn_label, btn_label_pos))) btn_edge_color = self.BTN_EDGE_HOLD_COLOR if self.pressed else self.BTN_EDGE_COLOR pygame.draw.rect(screen, btn_edge_color, self.surface.get_rect(), 5)
def draw_components(self, screen): screen.fill(self.BG_COLOR) # Draw title bar titlebar_rect = (0, 0, self.win_width(), self.TITLEBAR_HEIGHT) pygame.draw.rect(screen, self.ACCENT_COLOR, titlebar_rect) # Draw title text title = render_text(self.title_text, size=20, font='./assets/HelveticaNeue.ttf', bg=None) title_pos = align(title.get_rect(), titlebar_rect, horizontal=ALIGN_LEFT, hpad=15) screen.blit(title, title_pos) # Draw close button if self.dismissable: self.draw_closebtn(screen) titlebar_rect = (0, 0, self.win_width() - self.TITLEBAR_HEIGHT, self.TITLEBAR_HEIGHT) # Draw dialog count d_count = self.controller.dialog_count() if d_count > 1: d_count_label = render_text(f'({d_count})', size=16, font='./assets/HelveticaNeue.ttf', fg=(128, 128, 128), bg=None) d_count_pos = align(d_count_label.get_rect(), titlebar_rect, horizontal=ALIGN_RIGHT, hpad=-10) screen.blit(d_count_label, d_count_pos)
def internal_render(self): color = self.LINK_HOLD_COLOR if self.pressed else self.LINK_COLOR text = render_text(self.btn_text, size=self.size, fg=color, bg=None) fill(self.back_icon, color) _, _, tw, th = text.get_rect() _, _, iw, ih = self.back_icon.get_rect() self.surface = pygame.Surface((tw+iw, max(th, ih)), pygame.SRCALPHA, 32) self.surface_pressed = self.pressed self.surface.blits(blit_sequence=( (self.back_icon, (0, 0)), (text, (iw, abs(ih-th)/2)) ))
def render(self, screen): screen.fill(self.BG_COLOR) # Left Button if self.controller.is_view(SettingsView): about_btn_pos = align(self.about_btn.get_rect(), self.rect, horizontal=ALIGN_RIGHT, hpad=-15) self.about_btn.render(screen, about_btn_pos) elif not self.controller.is_view(AboutView): freq_btn_pos = align(self.freq_btn.get_rect(), self.rect, horizontal=ALIGN_RIGHT, hpad=-15) self.freq_btn.render(screen, freq_btn_pos) # Right Button if self.controller.is_root(): settings_btn_pos = align(self.settings_btn.get_rect(), self.rect, horizontal=ALIGN_LEFT, hpad=15) self.settings_btn.render(screen, settings_btn_pos) else: back_btn_pos = align(self.back_btn.get_rect(), self.rect, horizontal=ALIGN_LEFT, hpad=5) self.back_btn.render(screen, back_btn_pos) # Title title = render_text( self.title_text, size=self.TITLE_FONT_SIZE[self.controller.get_screen_scale()], font='./assets/HelveticaNeueBold.ttf', bg=None) title_pos = align(title.get_rect(), self.rect) screen.blit(title, title_pos)
def internal_render(self): color = self.LINK_HOLD_COLOR if self.pressed else self.LINK_COLOR self.surface = render_text(self.btn_text, size=self.size, fg=color, bg=None) self.surface_pressed = self.pressed
def draw_fps(self, screen): fps_label = render_text(f'{self.app.clock.get_fps():.1f} fps', size=16) fps_label.set_alpha(100) screen.blit(fps_label, fps_label.get_rect(bottomleft=(0, self.app.resolution[1])))