/common.h
https://github.com/XadillaX/byakuren · C Header · 151 lines · 57 code · 16 blank · 78 comment · 4 complexity · 79549c58aede931331c97421cc7db09f MD5 · raw file
- /**
- *
- * }: _、,r 、,,v \
- * / \ 、,v'" ~ ゚~"''x、 \
- * / 、r''" ,, 、,v、x。,, ~" 、,
- * ...::::入,," ,,、イ: : : : : : : : :"'ミ、,
- * ...::::/ y": : : : : : : : : :イ : : : : : : :"v '、
- * } ....:::::イ /.: :/: : :/: :/ 八: : : : : : : : :\ ,"
- * j / ,:': : : /: :/: / /: ハ: : }:\: : : : :´、, ォ
- * 、'"~`"ゞ ,.: : : : : : : :イ≦" ̄'' 、;_:j : : : : : : : : トミ
- * r" オ彡 {: : : {: : : Vfうか㍉ ル">ミ: : : : :!: !
- * 、 ," 人: :八.: :从 ヒツ ん㍊: : : : : リ j
- * ´、,, 、ノ'′ -‐:彡/: : : : :\ ヽ"" だン 从: : : イレ
- * "¨ . . : : : : : : : : : : : {: : : : : :) ' `¨ ノ: :ノ: : :人ヽ
- * /: /: : : / : : : :八: : : : :リ ` ー ー=彡:イ: : : : : : : :
- * /: : : : : : : : : : : : イ: : :): : : : :| \ イ : : }: : : :}: :ハ: }
- * ,': : : {: : : :厂¨¨<: 人: : : : : : : ! ー 爪: :i : : :} : : :ル: : :ソ
- * {: : :八: > /: : : : : : : : リ {: : : i: : :r- < ¨¨ヽ: : .
- * ..人: : / /: : : : : i: : : : :八 / 〉ミ: i: r┴ ヽ V: :\
- * ソ /: : : : : : : i: : / ," \:.r-- 、 V: : : \
- * /: :{ ,':ィ: /: : : /ノ/ ,, λ 、 ∨i: : : : : : .
- * /:{ ル: : 彡" ≠===…-===彳 v´ ゝ冬。 : : : : : :
- * . :∧ /: : :/" "s。 亥 ;" ヽミ Y: : : : : : :}
- * .ノ: : 人 /: / { ドx。 。ζ 、 : :ハ Ⅳ: : : : :人
- * : : : : : :У: ' 、 '; ≫≪゚゜ ; ;" }:^j i "、:ルイ: : \
- * : : : : : (: :({ ;" ジ゚゜ .:: ヾ。," ", : ;"" 、, i "; :八: :}
- * : :!: : :ハ:.入 v ;" .::::.. `; "、 人{、 "、,, )
- * V{: : : : : ゝ j 、 ノ \ "; χ 〉"、,, ",、
- * 、: : : Y¨¨≫> _) ,ж" ,,ゞ''::.. -‐ ".、 / "、,, "
- * ヽ: :∧〃 ", π_゚≫=≦゚_ "、 V "、,, "、
- * V ''、 ド¨ ¨=≧、,
- * } y" "、,_ { }" ,"
- * { ヽ ;i '`~え
- * \、 ,'` ~ ", } ;"
- * V \ ,,'` ~ ",
- * ∧"'' 、_,、"~ ")彡' ;"
- * j j==¨天⌒ミo。 、,,v '`"~ \ r'"
- * ,,、'" 、。彳 ヾ 》'` "~ 、 ヽ、,v"
- * / ,,r 、v~ "i{ 》添冬 ,, '` ~ "y
- * r 、v~ "y 侔愛翔
- * ,,^" 、,"^ \ ゞ趁彡' ,''` f"~
- * 〈 r" )i ヽ ,,'` ,''`i
- * j ..:::'′ ,、 '"|
- * Y ",, ,,^ i 、 .) 、r~ ,、r~ j
- * 彡ィ" `-ヽ_ゝ しY,`~ v "
- * "、 、j ;i^ `~
- * " ~| i| /
- *
- * Byakuren - A theme color extracting library implemented by C.
- *
- * Copyright (c) 2017 XadillaX <i@2333.moe>
- *
- * MIT LIcense <https://github.com/XadillaX/byakuren/blob/master/LICENSE>
- */
- #ifndef __BKR_COMMON_H__
- #define __BKR_COMMON_H__
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdint.h>
- #include "third-party/xmempool/xmempool.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifndef NULL
- #define NULL (0)
- #endif
- #define SAFE_DESTROY_POOL(pool) if(pool) { xmem_destroy_pool(pool); pool = NULL; }
- #define SAFE_FREE(pointer) if(pointer) { free(pointer); pointer = NULL; }
- #define MAX_INT (2147483647)
- #define BKR_RGB_TO_INT32(r, g, b) (((r) << 16) + ((g) << 8) + (b))
- #define BKR_IS_GRAY(a, offset) (abs((a)->red - (a)->green) <= offset && \
- abs((a)->red - (a)->blue) <= offset && \
- abs((a)->green - (a)->blue) <= offset)
- /**
- * RGB 颜色结构体
- */
- typedef struct bkr_rgb {
- uint8_t red;
- uint8_t green;
- uint8_t blue;
- } bkr_rgb;
- /**
- * 主题色结果(颜色、色值、像素数)结构体
- */
- typedef struct bkr_color_stats {
- bkr_rgb color;
- uint32_t value;
- uint32_t count;
- } bkr_color_stats;
- /**
- * 八叉树节点结构体
- */
- typedef struct bkr_octree_node {
- uint32_t red_components;
- uint32_t green_components;
- uint32_t blue_components;
- uint8_t is_leaf;
- uint32_t pixel_count;
- struct bkr_octree_node* children[8];
- } bkr_octree_node;
- /**
- * 八叉树可删减链表节点结构体
- */
- typedef struct bkr_octree_reducible_list_node {
- struct bkr_octree_node* node;
- struct bkr_octree_reducible_list_node* next;
- } bkr_octree_reducible_list_node;
- /**
- * 标准色板结构体
- */
- typedef struct bkr_palette_array {
- uint32_t count;
- bkr_rgb* colors;
- } bkr_palette_array;
- /**
- * 最小差值法参数结构体
- */
- typedef struct bkr_mindiff_parameter {
- bkr_palette_array* palette;
- int16_t gray_offset;
- } bkr_mindiff_parameter;
- // * * * *
- // ** 注意没有对多线程作支持 **
- // 主要是因为内存池没支持
- // ** ---------------------- **
- // * *
- extern xmem_pool_handle bkr_rgb_pool;
- extern int bkr_init();
- extern void bkr_destroy();
- // 该函数为颜色结果排序的函数
- extern int _stats_cmp(const void* a, const void* b);
- #ifdef __cplusplus
- }
- #endif
- #endif