From 190c1e325a3990debc2470faaa0295f2f4b2f9c5 Mon Sep 17 00:00:00 2001 From: youhy Date: Sat, 11 Dec 2021 09:04:53 -0800 Subject: [PATCH] add color tutorial Signed-off-by: youhy --- examples/color_example.cc | 10 +++++-- tutorials.md.in | 1 + tutorials/color.md | 58 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 tutorials/color.md diff --git a/examples/color_example.cc b/examples/color_example.cc index daed6f16c..4d7325a9e 100644 --- a/examples/color_example.cc +++ b/examples/color_example.cc @@ -24,10 +24,10 @@ int main(int argc, char **argv) //! [Create a color] ignition::math::Color a = ignition::math::Color(0.3, 0.4, 0.5); //! [Create a color] - // The channel order is R, G, B, A and the default alpha value of a should be 1.0 std::cout << "The alpha value of a should be 1: " << a.A() << std::endl; + //! [Set a new color value] a.ignition::math::Color::Set(0.6, 0.7, 0.8, 1.0); //! [Set a new color value] @@ -38,14 +38,20 @@ int main(int argc, char **argv) ignition::math::Color::BGRA blue = 0xFF0000FF; a.ignition::math::Color::SetFromBGRA(blue); //! [Set value from BGRA] + +//! [Math operator] std::cout << "Check if a is Blue: " << (a == ignition::math::Color::Blue) << std::endl; + std::cout << "The RGB value of a should be (0, 0, 1): " << a[0] << ", " + << a[1] << ", " + << a[2] << std::endl; +//! [Math operator] //! [Set value from HSV] // Initialize with HSV. (240, 1.0, 1.0) is blue in HSV. a.ignition::math::Color::SetFromHSV(240.0, 1.0, 1.0); -//! [Set value from HSV] std::cout << "The HSV value of a: " << a.HSV() << std::endl; std::cout << "The RGBA value of a should be (0, 0, 1, 1): " << a << std::endl; +//! [Set value from HSV] } //! [complete] diff --git a/tutorials.md.in b/tutorials.md.in index ee951f2ee..31e220980 100644 --- a/tutorials.md.in +++ b/tutorials.md.in @@ -13,6 +13,7 @@ Ignition @IGN_DESIGNATION_CAP@ library and how to use the library effectively. 4. \subpage angle "Angle example" 5. \subpage triangle "Triangle example" 6. \subpage rotation "Rotation example" +7. \subpage color "Color example" ## License diff --git a/tutorials/color.md b/tutorials/color.md new file mode 100644 index 000000000..d051ab287 --- /dev/null +++ b/tutorials/color.md @@ -0,0 +1,58 @@ +\page color Color example + +This tutorial explains how to use the `Color` class from Ignition Math library. + +## Compile the code + +Go to `ign-math/examples` and use `cmake` to compile the code: + +```{.sh} +git clone https://github.com/ignitionrobotics/ign-math/ -b ign-math6 +cd ign-math/examples +mkdir build +cd build +cmake .. +make +``` + +When the code is compiled, run: + +```{.sh} +./color_example +``` + +The ouput of the program: + +```{.sh} +The alpha value of a should be 1: 1 +The RGBA value of a: 0.6 0.7 0.8 1 +Check if a is Blue: 1 +The RGB value of a should be (0, 0, 1): 0, 0, 1 +The HSV value of a: 4 1 1 +The RGBA value of a should be (0, 0, 1, 1): 0 0 1 1 +``` + +## Code + +Create a color with the following RGBA value. The the alpha value is set default to 1.0: + +\snippet examples/color_example.cc Create a color + +Change the value of a color via `Set()`. All values are set default to 1.0 if not specify. + +\snippet examples/color_example.cc Set a new color value + +The ABGR, ARGB, BGRA, RGBA are 4 datatypes that allow you to set color from a 32-bit int. Take BGRA as an example: + +\snippet examples/color_example.cc Set value from BGRA + +Color class overloads math operators including `+`, `-`, `*`, `/`, `[]`, and `==`. + +\snippet examples/color_example.cc Math operator + +You can also set or read a color in HSV. + +\snippet examples/color_example.cc Set value from HSV + +There are more functions in `Color`. Take a look at the [API](https://ignitionrobotics.org/api/math/6.9/classignition_1_1math_1_1Color.html) +