Simple scale concept

This commit is contained in:
Jaby 2025-02-17 17:46:59 +01:00
parent ebf640520e
commit a797bff7a1
2 changed files with 85 additions and 67 deletions

View File

@ -1,5 +1,5 @@
import { VRAMArea } from "../vram-components.slint";
import { Button, ComboBox, GroupBox, StandardListView, LineEdit } from "std-widgets.slint";
import { Button, ComboBox, GroupBox, StandardListView, LineEdit, ScrollView } from "std-widgets.slint";
struct VRAMImage {
img: image,
@ -10,6 +10,7 @@ struct VRAMImage {
}
export component MainTab inherits Rectangle {
property <int> test_scale: 2;
in-out property <image> vram_bg;
in-out property <[StandardListViewItem]> vram_files: [];
in-out property <[VRAMImage]> vram_images: [];
@ -27,7 +28,15 @@ export component MainTab inherits Rectangle {
y: 4px;
VerticalLayout {
background_rect := Rectangle {
ScrollView {
width: rect.width/root.test_scale;
height: rect.height/root.test_scale;
viewport-x: 0;
viewport-y: 0;
viewport-width: rect.width;
viewport-height: rect.height;
rect := Rectangle {
width: background_image.width + root.get_border_width()*2px;
height: background_image.height + root.get_border_width()*2px;
border-width: root.get_border_width()*1px;
@ -39,6 +48,7 @@ export component MainTab inherits Rectangle {
img: vram_bg;
img_x: 0;
img_y: 0;
scale: test_scale;
}
for vram_image[i] in root.vram_images: VRAMArea {
@ -47,6 +57,8 @@ export component MainTab inherits Rectangle {
img: vram_image.img;
img_x: vram_image.x;
img_y: vram_image.y;
scale: test_scale;
TouchArea {
x: (parent.img_x + self.lines_crossed_x())*1px;
y: (parent.img_y + self.lines_crossed_y())*1px;
@ -92,6 +104,7 @@ export component MainTab inherits Rectangle {
}
}
}
}
HorizontalLayout {
padding: 4px;
GroupBox {

View File

@ -3,14 +3,17 @@ component VRAMSegment inherits Rectangle {
in property <image> img;
in property <int> clip_x;
in property <int> clip_y;
in property <int> scale: 1;
width: 64px;
height: 256px;
width: 64px*scale;
height: 256px*scale;
clip: true;
Image {
source: img;
x: -root.clip_x*1px;
y: -root.clip_y*1px;
x: -root.clip_x*1px*scale;
y: -root.clip_y*1px*scale;
width: img.width*1px*scale;
height: img.height*1px*scale;
}
}
@ -18,17 +21,19 @@ export component VRAMArea inherits Rectangle {
in property <image> img;
in property <int> img_x;
in property <int> img_y;
in property <int> scale: 1;
width: (64*16+15)*1px;
height: (256*2+1)*1px;
width: ((64*16+15)*1px)*scale;
height: ((256*2+1)*1px)*scale;
for idx in 32 : VRAMSegment {
x: root.get_x(idx)*(64px + 1px);
y: root.get_y(idx)*(256px + 1px);
x: (root.get_x(idx)*(64px + 1px))*scale;
y: (root.get_y(idx)*(256px + 1px))*scale;
img: img;
clip_x: (root.get_x(idx)*64) - root.img_x;
clip_y: (root.get_y(idx)*256) - root.img_y;
scale: root.scale;
}
function get_x(idx: int) -> int {