void convert(char* ten,int L,char* five,int& M) { M=0; while (L>0) { five[M++]=ten[0]%5; div5(ten,L); } }
static void split_into8( word r, word g, word b, int n, byte *inxs ) { byte inx; if ( n >= 9 ) { inx = takefrom8(div9(r), div9(g), div9(b)); b -= gbmrgb_8[inx].b; g -= gbmrgb_8[inx].g; r -= gbmrgb_8[inx].r; *inxs++ = inx; inx = takefrom8(div8(r), div8(g), div8(b)); b -= gbmrgb_8[inx].b; g -= gbmrgb_8[inx].g; r -= gbmrgb_8[inx].r; *inxs++ = inx; inx = takefrom8(div7(r), div7(g), div7(b)); b -= gbmrgb_8[inx].b; g -= gbmrgb_8[inx].g; r -= gbmrgb_8[inx].r; *inxs++ = inx; } if ( n >= 6 ) { inx = takefrom8(div6(r), div6(g), div6(b)); b -= gbmrgb_8[inx].b; g -= gbmrgb_8[inx].g; r -= gbmrgb_8[inx].r; *inxs++ = inx; inx = takefrom8(div5(r), div5(g), div5(b)); b -= gbmrgb_8[inx].b; g -= gbmrgb_8[inx].g; r -= gbmrgb_8[inx].r; *inxs++ = inx; } if ( n >= 4 ) { inx = takefrom8(div4(r), div4(g), div4(b)); b -= gbmrgb_8[inx].b; g -= gbmrgb_8[inx].g; r -= gbmrgb_8[inx].r; *inxs++ = inx; } if ( n >= 3 ) { inx = takefrom8(div3(r), div3(g), div3(b)); b -= gbmrgb_8[inx].b; g -= gbmrgb_8[inx].g; r -= gbmrgb_8[inx].r; *inxs++ = inx; } inx = takefrom8(div2(r), div2(g), div2(b)); b -= gbmrgb_8[inx].b; g -= gbmrgb_8[inx].g; r -= gbmrgb_8[inx].r; *inxs++ = inx; *inxs = takefrom8(r, g, b); }