Integrated pixy into emulator. Pixy is no longer in the common/libs folder but in emulator/libs and discovery/libs
This commit is contained in:
108
emulator/libs/Pixy/src/calc.cpp.notneeded
Normal file
108
emulator/libs/Pixy/src/calc.cpp.notneeded
Normal file
@@ -0,0 +1,108 @@
|
||||
//
|
||||
// begin license header
|
||||
//
|
||||
// This file is part of Pixy CMUcam5 or "Pixy" for short
|
||||
//
|
||||
// All Pixy source code is provided under the terms of the
|
||||
// GNU General Public License v2 (http://www.gnu.org/licenses/gpl-2.0.html).
|
||||
// Those wishing to use Pixy source code, software and/or
|
||||
// technologies under different licensing terms should contact us at
|
||||
// cmucam@cs.cmu.edu. Such licensing terms are available for
|
||||
// all portions of the Pixy codebase presented here.
|
||||
//
|
||||
// end license header
|
||||
//
|
||||
|
||||
#include "calc.h"
|
||||
|
||||
void hsvc(uint8_t r, uint8_t g, uint8_t b, uint8_t *h, uint8_t *s, uint8_t *v, uint8_t *c)
|
||||
{
|
||||
uint8_t min, max, delta;
|
||||
int hue;
|
||||
min = MIN(r, g);
|
||||
min = MIN(min, b);
|
||||
max = MAX(r, g);
|
||||
max = MAX(max, b);
|
||||
|
||||
*v = max;
|
||||
delta = max - min;
|
||||
if (max>50)
|
||||
{
|
||||
//if (delta>50)
|
||||
*s = ((int)delta<<8)/max;
|
||||
//else
|
||||
// *s = 0;
|
||||
}
|
||||
else
|
||||
*s = 0;
|
||||
if (max==0 || delta==0)
|
||||
{
|
||||
*s = 0;
|
||||
*h = 0;
|
||||
*c = 0;
|
||||
return;
|
||||
}
|
||||
if (r==max)
|
||||
hue = (((int)g - (int)b)<<8)/delta; // between yellow & magenta
|
||||
else if (g==max)
|
||||
hue = (2<<8) + (((int)b - (int)r)<<8)/delta; // between cyan & yellow
|
||||
else
|
||||
hue = (4<<8) + (((int)r - (int)g)<<8)/delta; // between magenta & cyan
|
||||
if(hue < 0)
|
||||
hue += 6<<8;
|
||||
hue /= 6;
|
||||
*h = hue;
|
||||
*c = delta;
|
||||
}
|
||||
|
||||
uint32_t lighten(uint32_t color, uint8_t factor)
|
||||
{
|
||||
uint32_t r, g, b;
|
||||
|
||||
rgbUnpack(color, &r, &g, &b);
|
||||
|
||||
r += factor;
|
||||
g += factor;
|
||||
b += factor;
|
||||
|
||||
return rgbPack(r, g, b);
|
||||
}
|
||||
|
||||
uint32_t rgbPack(uint32_t r, uint32_t g, uint32_t b)
|
||||
{
|
||||
if (r>0xff)
|
||||
r = 0xff;
|
||||
if (g>0xff)
|
||||
g = 0xff;
|
||||
if (b>0xff)
|
||||
b = 0xff;
|
||||
return (r<<16) | (g<<8) | b;
|
||||
}
|
||||
|
||||
void rgbUnpack(uint32_t color, uint32_t *r, uint32_t *g, uint32_t *b)
|
||||
{
|
||||
*b = color&0xff;
|
||||
color >>= 8;
|
||||
*g = color&0xff;
|
||||
color >>= 8;
|
||||
*r = color&0xff;
|
||||
}
|
||||
|
||||
uint32_t saturate(uint32_t color)
|
||||
{
|
||||
float m;
|
||||
uint32_t max, r, g, b;
|
||||
|
||||
rgbUnpack(color, &r, &g, &b);
|
||||
|
||||
max = MAX(r, g);
|
||||
max = MAX(max, b);
|
||||
|
||||
// saturate while maintaining ratios
|
||||
m = 255.0f/max;
|
||||
r = (uint8_t)(m*r);
|
||||
g = (uint8_t)(m*g);
|
||||
b = (uint8_t)(m*b);
|
||||
|
||||
return rgbPack(r, g, b);
|
||||
}
|
||||
Reference in New Issue
Block a user