Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.yorktea.tracker
- {
- import flash.display.BitmapData;
- import flash.events.EventDispatcher;
- import flash.geom.Point;
- import flash.utils.ByteArray;
- public class ColorTracker extends EventDispatcher
- {
- public function ColorTracker()
- {
- }
- private function rgbToHsv(r:int,g:int,b:int):HSV
- {
- var hsv:HSV = new HSV();
- var min:Number, max:Number, delta:Number;
- min = Math.min(r, g, b);
- max = Math.max(r, g, b);
- hsv.v = max;
- delta = max - min;
- if (max != 0)
- {
- hsv.s = delta / max;
- if (r == max)
- {
- hsv.h = (g-b) / delta;
- }
- else if (g==max)
- {
- hsv.h = 2 + (b-r) / delta;
- }
- else
- {
- hsv.h = 4 + (r-g) / delta;
- }
- hsv.h *= 60;
- if (hsv.h < 0)
- {
- hsv.h += 360;
- }
- }
- else
- {
- hsv.h = 0;
- hsv.s = 0;
- hsv.v = 0;
- }
- return hsv;
- }
- public function update(bd:BitmapData):Point
- {
- var ba:ByteArray = bd.getPixels(bd.rect);
- ba.position = 0;
- var px:uint;
- var r:int, g:int, b:int;
- var x:int, y:int;
- for(y = 0;y < bd.height; y++)
- {
- for(x = 0;x < bd.width; x++)
- {
- px = ba.readUnsignedInt();
- r = (px >> 20) & 0xf;
- g = (px >> 12) & 0xf;
- b = (px >> 4) & 0xf;
- var hsv:HSV = rgbToHsv(r, g, b);
- trace(hsv);
- }
- }
- return null;
- }
- }
- }
- class HSV
- {
- public var h:Number;
- public var s:Number;
- public var v:Number;
- public function toString():String
- {
- return "H: " + h + " S: " + s + " V:" + v;
- }
- }
Add Comment
Please, Sign In to add comment