Spheres
Site Map Feedback

Download:

Up Colour Spline HSL HSV Mixers Shaders

The Glass and Pearl methods return smoothly changing shades that add glass-like or pearlescent finishes to a base-colour. Their use isn't exactly obvious, so start by playing with the following code. The jagged circle edge can be antialiased using the gFilters::Antialias method.

Glass
Pearl

void SphereShader(WORD X, WORD Y, WORD r, gColor Shade, bool Shiny) {
  gColor Color;
  for(int x=-r; x<=r; ++x) {
    WORD cx=WORD(X+x);
    for(int y=-r; y<=r; ++y) {
      if(Shiny) Color=Shade.GetGlassColor(double(x)/r, double(y)/r);
      else      Color=Shade.GetPearlColor(double(x)/r, double(y)/r);
      Color.SetA(gFilters::Antialias(x*x + y*y, r*r, 3.5*r));
      SetPixel(cx, WORD(Y+y), Color.GetRGBA());
  } }
}
SetPixel is a member of CPixelBlock which was used as a base class.
The following image shows a gold ButtonStencil with a red sphere which could be used as a slider control: Slider with Gold Metallic Finish


THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.