1
0
mirror of https://github.com/azure-rtos/guix.git synced 2025-02-04 07:13:17 +08:00
guix/guix_studio/palette_creater.h

52 lines
1.2 KiB
C
Raw Normal View History

#pragma once
#include "studiox_includes.h"
#define HIST_RED_BITS 5
#define HIST_GREEN_BITS 6
#define HIST_BLUE_BITS 5
#define HIST_RED_SHIFT 3
#define HIST_GREEN_SHIFT 2
#define HIST_BLUE_SHIFT 3
#define RED_SCALE 2 // scale red distance by this much
#define GREEN_SCALE 3 // scale green distance by this much
#define BLUE_SCALE 1
typedef struct{
int rmin;
int rmax;
int gmin;
int gmax;
int bmin;
int bmax;
int volume;//color volume
long color_count;//color population
}BOX;
class palette_creater
{
public:
palette_creater();
~palette_creater();
public:
void CreatePaletteForOnePixelmap(res_info *resource, palette_info *info, int count = -1);
void CreatePaletteForPixelmaps(res_info *resource, palette_info *info, BOOL recursive = TRUE, int count = -1);
protected:
BOX *FindLargestColorPop(int numboxes);
BOX *FindLargestColorVolume(int numboxes);
void UpdateBox(BOX *boxp);
void AccumulateSharedHistogram(res_info *info);
void AccumulateOneMapHistogram(res_info *info);
int median_cut(int desired_colors_num);
void ComputeColor(palette_info *info, BOX *boxp, int index);
private:
ULONG *histogram;
BOX *boxlist;
};