Comments (2)
We could consider adding unique hashes to each operation/unoperation combination to be able to uniquely some history event
special attention has to be payed to keep paths/indices consistent
from graphite.
Generate inverse operation for a given operation and store both in the document.
So every operation must be defined in two ways: its forward and inverse direction? An inverse operation would be like a regular operation but its action makes changes to the graph which undoes its previous (forward) operation?
This will be used to implement the history feature
I assume you mean the history chain (perhaps we should call it the Ledger). Why do we need the concept of an "inverse operation" when we could instead just roll back to the previous state of the world one ledger entry ago?
We could consider adding unique hashes to each operation/unoperation combination to be able to uniquely some history event
Is an index in the ledger (starting at 0 from the first event) not sufficient? I don't think there would ever be references to future points in history, so if you undo enough to invalidate a reference to another point in history (using an index number), that reference shouldn't exist anymore and it wouldn't be a problem. The only problem I see with using indices is that we might someday implement a history collapse feature which would consolidate the journal history by removing redundant events (like those which were later deleted but didn't have an effect on later points in history).
from graphite.
Related Issues (20)
- Customising grid colour
- Grid as dots
- Further customisation of snapping HOT 6
- Show artboard names in viewport
- Don't outline hovered layers when box selecting HOT 4
- Color::from_rgb_str() and Color::rgb_hex() inconsistency HOT 1
- Shape tools should allow modifying their drawn shapes
- Alignment button options (align to artboard) HOT 3
- Folder issues in example artwork HOT 3
- "Flip" view navigation button HOT 1
- Fix Deep/Shallow selection regression HOT 1
- Can't drag selected layers. HOT 1
- Caching the WASM using service workers HOT 1
- Audit and reclassify node catalog HOT 2
- Fill tool is unable to fill on Pencil created shapes
- [Crash Report] HOT 1
- Contravariance for node inputs with automatic coercion
- Stable document format MVP
- (Question) What is the Cargo package of the desktop client? HOT 3
- (Design suggestion) Replace GTK by a Rust GUI toolkit HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from graphite.