mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 07:22:23 -04:00

* remove unfinished polygon and remove selectable for shapes in polygon mode * make group and polygon position remain inside canvas area * click through transparent area in grouped object * add some shortcuts for basic usages * tools button icon in center & switch mode border * fix load svg image * basic rtl support, panzoom have issues in rtl mode * better zoom option both in ltr and rtl * handle zoom event in mask editor * add h button to handle toggle mask * add more mime type * use capital M (shift+m) for toggle mask * allow io shortcuts in mask editor only * make other shapes also remain in canvas bound area * better zoom implementation, zoom from center add zoom to resize event listener * add a border to corner to handle blend of control * add refresh button to go to selection menu * add tooltip to shortcuts and also add shortcut for other tools * make opacity remain in same state when toggled on * opacity for group/ungroup objects * update shortcuts implementation
107 lines
2.6 KiB
Protocol Buffer
107 lines
2.6 KiB
Protocol Buffer
// Copyright: Ankitects Pty Ltd and contributors
|
|
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
|
|
syntax = "proto3";
|
|
|
|
option java_multiple_files = true;
|
|
|
|
package anki.image_occlusion;
|
|
|
|
import "anki/collection.proto";
|
|
import "anki/generic.proto";
|
|
|
|
service ImageOcclusionService {
|
|
rpc GetImageForOcclusion(GetImageForOcclusionRequest)
|
|
returns (GetImageForOcclusionResponse);
|
|
rpc GetImageOcclusionNote(GetImageOcclusionNoteRequest)
|
|
returns (GetImageOcclusionNoteResponse);
|
|
rpc GetImageOcclusionFields(GetImageOcclusionFieldsRequest)
|
|
returns (GetImageOcclusionFieldsResponse);
|
|
// Adds an I/O notetype if none exists in the collection.
|
|
rpc AddImageOcclusionNotetype(generic.Empty) returns (collection.OpChanges);
|
|
// These two are used by the standalone I/O page, but not used when using
|
|
// I/O inside Anki's editor
|
|
rpc AddImageOcclusionNote(AddImageOcclusionNoteRequest)
|
|
returns (collection.OpChanges);
|
|
rpc UpdateImageOcclusionNote(UpdateImageOcclusionNoteRequest)
|
|
returns (collection.OpChanges);
|
|
}
|
|
|
|
// Implicitly includes any of the above methods that are not listed in the
|
|
// backend service.
|
|
service BackendImageOcclusionService {}
|
|
|
|
message GetImageForOcclusionRequest {
|
|
string path = 1;
|
|
}
|
|
|
|
message GetImageForOcclusionResponse {
|
|
bytes data = 1;
|
|
string name = 2;
|
|
}
|
|
|
|
message AddImageOcclusionNoteRequest {
|
|
string image_path = 1;
|
|
string occlusions = 2;
|
|
string header = 3;
|
|
string back_extra = 4;
|
|
repeated string tags = 5;
|
|
int64 notetype_id = 6;
|
|
}
|
|
|
|
message GetImageOcclusionNoteRequest {
|
|
int64 note_id = 1;
|
|
}
|
|
|
|
message GetImageOcclusionNoteResponse {
|
|
message ImageOcclusionProperty {
|
|
string name = 1;
|
|
string value = 2;
|
|
}
|
|
|
|
message ImageOcclusionShape {
|
|
string shape = 1;
|
|
repeated ImageOcclusionProperty properties = 2;
|
|
}
|
|
|
|
message ImageOcclusion {
|
|
repeated ImageOcclusionShape shapes = 1;
|
|
}
|
|
|
|
message ImageOcclusionNote {
|
|
bytes image_data = 1;
|
|
repeated ImageOcclusion occlusions = 2;
|
|
string header = 3;
|
|
string back_extra = 4;
|
|
repeated string tags = 5;
|
|
string image_file_name = 6;
|
|
}
|
|
|
|
oneof value {
|
|
ImageOcclusionNote note = 1;
|
|
string error = 2;
|
|
}
|
|
}
|
|
|
|
message UpdateImageOcclusionNoteRequest {
|
|
int64 note_id = 1;
|
|
string occlusions = 2;
|
|
string header = 3;
|
|
string back_extra = 4;
|
|
repeated string tags = 5;
|
|
}
|
|
|
|
message GetImageOcclusionFieldsRequest {
|
|
int64 notetype_id = 1;
|
|
}
|
|
|
|
message GetImageOcclusionFieldsResponse {
|
|
ImageOcclusionFieldIndexes fields = 1;
|
|
}
|
|
|
|
message ImageOcclusionFieldIndexes {
|
|
uint32 occlusions = 1;
|
|
uint32 image = 2;
|
|
uint32 header = 3;
|
|
uint32 back_extra = 4;
|
|
}
|