This PR adds `json-rpc` crate — a library facilitating writing clients using JSON-RPC 2.0 protocol.
This library is meant to be used in implementation of File Manager and, in future, of Language Server clients.
The library is agnostic about `Transport` — but the interface has been designed in compliance with web-sys websockets, as this will be primary platform.
The RPC clients implemented on top of this library are expected to provide Future-based asynchronous API.
Client is designed to work in a single-thread environment,
Implements #426.
* HTMLScene and HTMLObject implementation
* Added HTMLRenderer and Camera objects
* Adding rlib as crate-type to make basegl available in tests
* HTMLRenderer tests and code cleanup
* Fixed transformations and adapted Quaternion euler transformation order from XYZ to YXZ (like threejs)
* Added knowledge comments
* Recovering original lib.rs (with world demo)
* Added shrinkwraprs
* Formatted files
* Improved opt_vec test coverage
* Fixes based on clippy and rustfmt
* Remove unused WeakSet :)
* Added documentation
* Improved HTMLObject::from_html_string and beautified the code fmt
* Created StyleSetter and AttributeSetter to deal with panics
* Fixed code chars limits
* Matrix code cleanup and more code style guidelines fixes
* More alignment fixes
* Some more fixes and refactoring
* Refactored IntoCSSMatrix
* Refactoring
* Removed examples/02-html
* More refactoring
* Derived rendering structs from Debug
* Refactoring (https://github.com/enso-org/ide/pull/50)
* Comments on HTMLRenderer tests
* Removed unwanted console_log
* Recovered missed css matrix3d code
* Added attribute to invalid doc codes
* Clippy lints fixes
* Fixed function access
* Added AnimationFrameLoop
* Custom web benchmarks implementation
* Added #[web_test] and #[web_bench] procedural macros
* Added documentation
* Lints
* Removed unused benchmark
* Removed unused test
* HTMLRenderer optimizations ;)
* resize_observe should return the index
* ResizeObserve for Scene & HTMLScene
* Lints
* Using array.join
* Added test scenario where OptVec has empty indices
* Made HTMLScene.objects private and provided accessors to it
* HTMLScene properties renaming
* Added unit test for Matrix4 memory layout
* Renamed packages author to Enso Team
* Improved benchmark readability
* Made IntoFloat32Array trait safe
* Refactored HTMLRenderer
* Lints
* Better code style
* Qualified Float32ArrayView as unsafe
* Usage example for web_test
* Style fixes
* Scene::add_resize_callback abstraction
* Spacing
* Major refactoring!
* Some minor fixes
* Comments for IntoFloat32ArrayView usage
* Navigation without smoothed movement
* Intersection Observer and navigator impl
* Intersection Observer and navigator impl
* Navigator with orthographic projection
* Camera refactoring
* Removed unecessary source note now that the code is self explanatory
* Smoothed camera navigation
* Refactored event_handler and navigator
* Linter fixes
* Fixed invalid_container test
* Included MouseEvent in system::web's Cargo.toml
* Code cleanup (unwraps refactoring) and documentation
* Adding Event and MouseEvent to basegl-system-web
* Added EventTarget to basegl-system-web
* Fixed navigation test
* Small fixes from review feedback
* Small fixes from review feedback
* Introduction of MouseManager
* Better physics with PhysicsSimulator and overshooting avoidance with AnimationManager
* Clippy fixes
* Disabling html_renderer test to verify CI failure
* Putting back html_renderer test. It looks like headless web testing is broken
* 60 steps per second Physics Simulator (Kinematics, Spring, Air Dragging)
* Style fix
* Review refactoring
* Moved mass to Kinematics
* Linter fixes
* Vertical alignemnt update
* Removing std::mem::forget from physics test
* Physically correct interpolated simulator
* PhysicsSimulator using Stokes' drag equation
* Created camera navigation example
* Refactored camera animation system
* Progress from reviews
* More progress on reviews
* Linter fixes
* Added fixme comment
* MouseManager refactoring
* Removed naked refcells
* Switched some usages of Rc to Weak
* New file hierarchy
* Fixed names
* Linter
* Breaking things and adding comments.
* Fixed touchpad panning
* Preventing default wheel event
* Zooming at constant speed
* Fixes
* Linter and test fixes
* Debug
* Removed debug
* Zoom clamping
* Better physics submodule name
* Animators now takes AnimationFrameLoop as a parameter and Bencher exposes it so we can reuse it
* Linter fixes
* Removed FIXME comment from animation.rs
* Updates based on review
* lint fix
* Manually merging master
* Adding position to animation
* Fixed tests
* Removed unused variables from text test
Co-authored-by: Wojciech Daniło <wojciech.danilo@gmail.com>
Co-authored-by: Adam Obuchowicz <obuchowiczadam@gmail.com>
Original commit: d1fcf4548b
Previously, paths in markdown links were incorrectly pointing to non-existent directories at repo root. This commit fixes them to link to existing subdirectories relative to the Readme file they're in.
Provides implementation of `HasSpan` and (newly introduced) `HasRepr` for all relevant Ast types.
Implements #379.
Wherever feasible, I tried to reduce boilerplate with macros. Certainly more can be done in that regard but that'd require spending more time on this task than we allocated.
* 60 steps per second Physics Simulator (Kinematics, Spring, Air Dragging)
* Style fix
* Review refactoring
* Moved mass to Kinematics
* Linter fixes
* Vertical alignemnt update
* Removing std::mem::forget from physics test
* Physically correct interpolated simulator
* PhysicsSimulator implementation only with one Animator
* Added source commcents
* Safer Physics mod setters
* Removed use of performance.now() in set_time
Original commit: 0596cc5097
This adds support for using `derive(Iterator)` to iterate over such structures like
```rust
struct Foo<T> {
a:(T,U,T),
b:Option<T>
}
```
i.e. where fields are dependent over last type argument, however they do not store it directly.
Dependent types like `Option<T>` are required to provide a compatible `iter` method.
Implements #407.
TextComponent supports scrolling now. During scroll we try to refresh a minimum
number of buffer fragments to make a uncovered lines actually displayed.
Original commit: a10bba9776
This PR extends `derive(Iterator)` proc macro to support enumeration type when they have variants with a single unnamed field, that implements `IntoIterator`.
Thanks to that, it is now finally possible to derive iterator for the `Shape` type and similar enum types used in AST.
Implements #385
This pull request adjusts AST data structures in Scala and Rust to be compatible, while also fixing a number of JSON format mismatches find along the way. This implements #336.
Text in text component is clipped to specified area on screen. Only visible
part of text have its data in opengl buffers. The buffer management was
somewhat adapted to quick scrolling with minimum buffer data refreshing.
Original commit: 0b39d6f89a
TextComponent will properly display text containing newline characters.
Code of the TextComponent was somewhat prepared for optimal clipping text and scrolling; each line of text have an own fixed-size buffer fragment, so the lines should be easily extended and fragments reused.
Original commit: 647430f1d8