1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-18 10:38:31 +02:00
VVVVVV/mobile_version/src/starling/utils/Color.as
Terry Cavanagh 72d018ea04 Update mobile version to mobile v2.2.1
The android version just got a much needed update to fix some resolution issues on devices with cutouts.

It turns out the mobile source was actually pretty out of date, like 3 versions out of date! This commit brings it up to date.

All the changes have just been about keeping the game running on modern devices, though. The biggest change was adding the Starling library to the project, which made the game GPU powered and sped the whole thing up.
2022-12-02 18:19:58 +01:00

117 lines
4.9 KiB
ActionScript

// =================================================================================================
//
// Starling Framework
// Copyright Gamua GmbH. All Rights Reserved.
//
// This program is free software. You can redistribute and/or modify it
// in accordance with the terms of the accompanying license agreement.
//
// =================================================================================================
package starling.utils
{
import starling.errors.AbstractClassError;
/** A utility class containing predefined colors and methods converting between different
* color representations. */
public class Color
{
public static const WHITE:uint = 0xffffff;
public static const SILVER:uint = 0xc0c0c0;
public static const GRAY:uint = 0x808080;
public static const BLACK:uint = 0x000000;
public static const RED:uint = 0xff0000;
public static const MAROON:uint = 0x800000;
public static const YELLOW:uint = 0xffff00;
public static const OLIVE:uint = 0x808000;
public static const LIME:uint = 0x00ff00;
public static const GREEN:uint = 0x008000;
public static const AQUA:uint = 0x00ffff;
public static const TEAL:uint = 0x008080;
public static const BLUE:uint = 0x0000ff;
public static const NAVY:uint = 0x000080;
public static const FUCHSIA:uint = 0xff00ff;
public static const PURPLE:uint = 0x800080;
/** Returns the alpha part of an ARGB color (0 - 255). */
public static function getAlpha(color:uint):int { return (color >> 24) & 0xff; }
/** Returns the red part of an (A)RGB color (0 - 255). */
public static function getRed(color:uint):int { return (color >> 16) & 0xff; }
/** Returns the green part of an (A)RGB color (0 - 255). */
public static function getGreen(color:uint):int { return (color >> 8) & 0xff; }
/** Returns the blue part of an (A)RGB color (0 - 255). */
public static function getBlue(color:uint):int { return color & 0xff; }
/** Creates an RGB color, stored in an unsigned integer. Channels are expected
* in the range 0 - 255. */
public static function rgb(red:int, green:int, blue:int):uint
{
return (red << 16) | (green << 8) | blue;
}
/** Creates an ARGB color, stored in an unsigned integer. Channels are expected
* in the range 0 - 255. */
public static function argb(alpha:int, red:int, green:int, blue:int):uint
{
return (alpha << 24) | (red << 16) | (green << 8) | blue;
}
/** Converts a color to a vector containing the RGBA components (in this order) scaled
* between 0 and 1. */
public static function toVector(color:uint, out:Vector.<Number>=null):Vector.<Number>
{
if (out == null) out = new Vector.<Number>(4, true);
out[0] = ((color >> 16) & 0xff) / 255.0;
out[1] = ((color >> 8) & 0xff) / 255.0;
out[2] = ( color & 0xff) / 255.0;
out[3] = ((color >> 24) & 0xff) / 255.0;
return out;
}
/** Multiplies all channels of an (A)RGB color with a certain factor. */
public static function multiply(color:uint, factor:Number):uint
{
var alpha:uint = ((color >> 24) & 0xff) * factor;
var red:uint = ((color >> 16) & 0xff) * factor;
var green:uint = ((color >> 8) & 0xff) * factor;
var blue:uint = ( color & 0xff) * factor;
if (alpha > 255) alpha = 255;
if (red > 255) red = 255;
if (green > 255) green = 255;
if (blue > 255) blue = 255;
return argb(alpha, red, green, blue);
}
/** Calculates a smooth transition between one color to the next.
* <code>ratio</code> is expected between 0 and 1. */
public static function interpolate(startColor:uint, endColor:uint, ratio:Number):uint
{
var startA:uint = (startColor >> 24) & 0xff;
var startR:uint = (startColor >> 16) & 0xff;
var startG:uint = (startColor >> 8) & 0xff;
var startB:uint = (startColor ) & 0xff;
var endA:uint = (endColor >> 24) & 0xff;
var endR:uint = (endColor >> 16) & 0xff;
var endG:uint = (endColor >> 8) & 0xff;
var endB:uint = (endColor ) & 0xff;
var newA:uint = startA + (endA - startA) * ratio;
var newR:uint = startR + (endR - startR) * ratio;
var newG:uint = startG + (endG - startG) * ratio;
var newB:uint = startB + (endB - startB) * ratio;
return (newA << 24) | (newR << 16) | (newG << 8) | newB;
}
/** @private */
public function Color() { throw new AbstractClassError(); }
}
}