Decouple font loading
This commit is contained in:
parent
7c5107921d
commit
c8392a53aa
|
@ -6,7 +6,7 @@ use super::{
|
||||||
VgaConfiguration, MODE_40X25_CONFIGURATION, MODE_40X50_CONFIGURATION,
|
VgaConfiguration, MODE_40X25_CONFIGURATION, MODE_40X50_CONFIGURATION,
|
||||||
MODE_640X480X16_CONFIGURATION, MODE_80X25_CONFIGURATION,
|
MODE_640X480X16_CONFIGURATION, MODE_80X25_CONFIGURATION,
|
||||||
},
|
},
|
||||||
fonts::{VgaFont, TEXT_8X16_FONT, TEXT_8X8_FONT},
|
fonts::VgaFont,
|
||||||
registers::{
|
registers::{
|
||||||
AttributeControllerIndex, AttributeControllerRegisters, ColorPaletteRegisters,
|
AttributeControllerIndex, AttributeControllerRegisters, ColorPaletteRegisters,
|
||||||
CrtcControllerIndex, CrtcControllerRegisters, EmulationMode, GeneralRegisters,
|
CrtcControllerIndex, CrtcControllerRegisters, EmulationMode, GeneralRegisters,
|
||||||
|
@ -191,7 +191,8 @@ impl Vga {
|
||||||
self.color_palette_registers.read_palette(palette);
|
self.color_palette_registers.read_palette(palette);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn load_font(&mut self, vga_font: &VgaFont) {
|
/// Loads a vga text mode font as specified by `vga_font`.
|
||||||
|
pub fn load_font(&mut self, vga_font: &VgaFont) {
|
||||||
// Save registers
|
// Save registers
|
||||||
let (
|
let (
|
||||||
plane_mask,
|
plane_mask,
|
||||||
|
@ -330,21 +331,18 @@ impl Vga {
|
||||||
/// Sets the video card to Mode 40x25.
|
/// Sets the video card to Mode 40x25.
|
||||||
fn set_video_mode_40x25(&mut self) {
|
fn set_video_mode_40x25(&mut self) {
|
||||||
self.set_registers(&MODE_40X25_CONFIGURATION);
|
self.set_registers(&MODE_40X25_CONFIGURATION);
|
||||||
self.load_font(&TEXT_8X16_FONT);
|
|
||||||
self.most_recent_video_mode = Some(VideoMode::Mode40x25);
|
self.most_recent_video_mode = Some(VideoMode::Mode40x25);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sets the video card to Mode 40x50.
|
/// Sets the video card to Mode 40x50.
|
||||||
fn set_video_mode_40x50(&mut self) {
|
fn set_video_mode_40x50(&mut self) {
|
||||||
self.set_registers(&MODE_40X50_CONFIGURATION);
|
self.set_registers(&MODE_40X50_CONFIGURATION);
|
||||||
self.load_font(&TEXT_8X8_FONT);
|
|
||||||
self.most_recent_video_mode = Some(VideoMode::Mode40x50);
|
self.most_recent_video_mode = Some(VideoMode::Mode40x50);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sets the video card to Mode 80x25.
|
/// Sets the video card to Mode 80x25.
|
||||||
fn set_video_mode_80x25(&mut self) {
|
fn set_video_mode_80x25(&mut self) {
|
||||||
self.set_registers(&MODE_80X25_CONFIGURATION);
|
self.set_registers(&MODE_80X25_CONFIGURATION);
|
||||||
self.load_font(&TEXT_8X16_FONT);
|
|
||||||
self.most_recent_video_mode = Some(VideoMode::Mode80x25);
|
self.most_recent_video_mode = Some(VideoMode::Mode80x25);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
use super::ScreenCharacter;
|
use super::ScreenCharacter;
|
||||||
use crate::{
|
use crate::{
|
||||||
colors::{Color16Bit, TextModeColor, DEFAULT_PALETTE},
|
colors::{Color16Bit, TextModeColor, DEFAULT_PALETTE},
|
||||||
|
fonts::TEXT_8X16_FONT,
|
||||||
vga::{Vga, VideoMode, VGA},
|
vga::{Vga, VideoMode, VGA},
|
||||||
};
|
};
|
||||||
use spinning_top::SpinlockGuard;
|
use spinning_top::SpinlockGuard;
|
||||||
|
@ -72,6 +73,7 @@ impl Text40x25 {
|
||||||
// Some bios mess up the palette when switching modes,
|
// Some bios mess up the palette when switching modes,
|
||||||
// so explicitly set it.
|
// so explicitly set it.
|
||||||
vga.load_palette(&DEFAULT_PALETTE);
|
vga.load_palette(&DEFAULT_PALETTE);
|
||||||
|
vga.load_font(&TEXT_8X16_FONT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the start of the `FrameBuffer` as `*mut ScreenCharacter`
|
/// Returns the start of the `FrameBuffer` as `*mut ScreenCharacter`
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
use super::ScreenCharacter;
|
use super::ScreenCharacter;
|
||||||
use crate::{
|
use crate::{
|
||||||
colors::{Color16Bit, TextModeColor, DEFAULT_PALETTE},
|
colors::{Color16Bit, TextModeColor, DEFAULT_PALETTE},
|
||||||
|
fonts::TEXT_8X8_FONT,
|
||||||
vga::{Vga, VideoMode, VGA},
|
vga::{Vga, VideoMode, VGA},
|
||||||
};
|
};
|
||||||
use spinning_top::SpinlockGuard;
|
use spinning_top::SpinlockGuard;
|
||||||
|
@ -72,6 +73,7 @@ impl Text40x50 {
|
||||||
// Some bios mess up the palette when switching modes,
|
// Some bios mess up the palette when switching modes,
|
||||||
// so explicitly set it.
|
// so explicitly set it.
|
||||||
vga.load_palette(&DEFAULT_PALETTE);
|
vga.load_palette(&DEFAULT_PALETTE);
|
||||||
|
vga.load_font(&TEXT_8X8_FONT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the start of the `FrameBuffer` as `*mut ScreenCharacter`
|
/// Returns the start of the `FrameBuffer` as `*mut ScreenCharacter`
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
use super::ScreenCharacter;
|
use super::ScreenCharacter;
|
||||||
use crate::{
|
use crate::{
|
||||||
colors::{Color16Bit, TextModeColor, DEFAULT_PALETTE},
|
colors::{Color16Bit, TextModeColor, DEFAULT_PALETTE},
|
||||||
|
fonts::TEXT_8X16_FONT,
|
||||||
vga::{Vga, VideoMode, VGA},
|
vga::{Vga, VideoMode, VGA},
|
||||||
};
|
};
|
||||||
use spinning_top::SpinlockGuard;
|
use spinning_top::SpinlockGuard;
|
||||||
|
@ -72,6 +73,7 @@ impl Text80x25 {
|
||||||
// Some bios mess up the palette when switching modes,
|
// Some bios mess up the palette when switching modes,
|
||||||
// so explicitly set it.
|
// so explicitly set it.
|
||||||
vga.load_palette(&DEFAULT_PALETTE);
|
vga.load_palette(&DEFAULT_PALETTE);
|
||||||
|
vga.load_font(&TEXT_8X16_FONT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the start of the `FrameBuffer` as `*mut ScreenCharacter`
|
/// Returns the start of the `FrameBuffer` as `*mut ScreenCharacter`
|
||||||
|
|
Loading…
Reference in a new issue