Add embedable images (#564)

* Add embedable bitmaps

* Initial work on blob urls

* Finish implementing data url

* Fix some bugs

* Rename bitmap to image

* Fix loading image on document load

* Add transform properties for image

* Remove some logging

* Add image dimensions

* Implement system copy and paste

* Fix pasting images

* Fix test

* Address code review

Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
0HyperCube
2022-03-27 11:43:41 +01:00
committed by Keavon Chambers
co-authored by Keavon Chambers
parent bd5715d070
commit 95ce94fa50
23 changed files with 462 additions and 59 deletions
+18
View File
@@ -308,6 +308,10 @@ export class DisplayEditableTextbox extends JsMessage {
readonly color!: Color;
}
export class UpdateImageData extends JsMessage {
readonly image_data!: ImageData[];
}
export class DisplayRemoveEditableTextbox extends JsMessage {}
export class UpdateDocumentLayer extends JsMessage {
@@ -371,6 +375,14 @@ export class LayerMetadata {
export type LayerType = "Folder" | "Image" | "Shape" | "Text";
export class ImageData {
readonly path!: BigUint64Array;
readonly mime!: string;
readonly image_data!: Uint8Array;
}
export class IndexedDbDocumentDetails extends DocumentDetails {
@Transform(({ value }: { value: BigInt }) => value.toString())
id!: string;
@@ -488,6 +500,10 @@ export class DisplayDialogComingSoon extends JsMessage {
export class TriggerTextCommit extends JsMessage {}
export class TriggerTextCopy extends JsMessage {
readonly copy_text!: string;
}
export class TriggerViewportResize extends JsMessage {}
// Any is used since the type of the object should be known from the rust side
@@ -504,12 +520,14 @@ export const messageConstructors: Record<string, MessageMaker> = {
DisplayDialogPanic,
DisplayDocumentLayerTreeStructure: newDisplayDocumentLayerTreeStructure,
DisplayEditableTextbox,
UpdateImageData,
DisplayRemoveEditableTextbox,
TriggerFileDownload,
TriggerFileUpload,
TriggerIndexedDbRemoveDocument,
TriggerIndexedDbWriteDocument,
TriggerTextCommit,
TriggerTextCopy,
TriggerViewportResize,
UpdateActiveDocument,
UpdateActiveTool,