Comments (4)
Hi, and thanks for the report!
Being able to use gradients sounds very fun indeed! I haven't spent much time thinking about it though so I'm not sure yet what the API would look like - in particular:
- How to unify the styling with the current flat colors styles
- And possibly with a future "opacity" concept where views can be partially transparent, letting lower layers be seen through.
- How to make it easily configurable in json/yaml for theme files
- Support for "absolute positioning" gradient, where the gradient is defined on the entire terminal window but only applied to a single view
from cursive.
The latest couple of commits bring some gradient features:
cursive::style::gradient
defines a few new types:Linear
is a piecewise 1D (linear) gradient (converts a float between 0 and 1 to a RGB color).Angled
,Radial
andBilinear
are 2D gradients: they assign a color to each cell of a grid (sometimes using aLinear
internally).
A few places make use of these:
cursive::utils::markup::gradient
can apply aLinear
gradient to aStyledString
, either for the front or background color.cursive::views::GradientView
takes a 2D gradient, and applies it to a wrapped view, either using local coordinates (the gradient stretches to the extend of the view), or "global" coordinates (the gradient is calculated using the absolute position of the view in the terminal), which can give nice effects when used by multiple views.
Finally, a gradient
example has been added, which uses all of these.
from cursive.
thanks! Is there anything yet to add, or can we close the issue?
from cursive.
thanks! Is there anything yet to add, or can we close the issue?
Well, it depends if your use-case was solved :)
There's an endless list of potential improvements: support for more 2D gradients (diamond, conical, ...), composite 2D gradients, LCH/HSB/HSL color space interpolation, more gradient presets, user-expandable list of presets that can be loaded by the builder
module, animated gradients, ...
from cursive.
Related Issues (20)
- [FEATURE] How would I bring form, panel, and menu into this? HOT 1
- [BUG] Calling find_name() in the wrong order makes things unfindable HOT 2
- Documentation issue about textarea set_cursor HOT 2
- [BUG] While using cursive, stacktrace (on panic) are never printed to (non-alternate) screen HOT 2
- [FEATURE] more keys in `event::Keys` HOT 2
- [BUG] Shift+Up/Down do not work w/ Termion backend HOT 2
- [BUG] cursive.clear() does not work. HOT 2
- [FEATURE] `CheckBox` as multichoice with similarity to `RadioGroup` HOT 2
- [BUG] Button gets pressed on mouse hover with crossterm HOT 4
- [FEATURE] Multiline EditView HOT 2
- Inconsistency between documentation and code implementation HOT 3
- [FEATURE] Feature Request or Guidance on Customizing Submit Key for SelectView HOT 1
- [BUG] Limit subview size HOT 2
- [BUG] Panic when opening empty menubar subtree HOT 2
- [FEATURE] Add the capacity to disable or enabled the Views. Buttons, Edit and others. Even Full Layouts. HOT 1
- [BUG] cursive exits immediately when asked to display a string with a null byte HOT 5
- [FEATURE] Menubar to render StyledStrings HOT 5
- [BUG] The recent "Move examples to the repo root" commit broke rust-analyzer for the examples HOT 4
- [BUG] tests fail with unicode-width 0.1.12 but not with 0.1.13 (should we support both in tests too?) HOT 1
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 cursive.