c++ - Is this too specific to refactor with loops? -
is code in function specific refactor loops? there's no algorithm can think of accurately reproduce required result.
bool mouse::createdefaultimage() { if(_defaultimage != nullptr) return false; const int depth = 32; const int width = 11; const int height = 19; _defaultimage = create_bitmap_ex(depth, width, height); if(_defaultimage == nullptr) return false; const int black = 0x000000; const int white = 0xffffff; const int pink = 0xff00ff; //color bitmap transparent clear_to_color(_defaultimage, pink); //only color areas not transparent. //each block row of pixels. /************************************************************************ * should produce result * = black; 0 = white; - = pink * * *---------- * * **--------- * * *0*-------- * * *00*------- * * *000*------ * * *0000*----- * * *00000*---- * * *000000*--- * * *0000000*-- * * *00000000*- * * *00000***** * * *00*00*---- * * *0*-*00*--- * * **--*00*--- * * *----*00*-- * * -----*00*-- * * ------*00*- * * ------*00*- * * -------**-- * ************************************************************************/ ((long *)_defaultimage->line[0])[0] = black; //((long *)_defaultimage->line[0])[1] = pink; //((long *)_defaultimage->line[0])[2] = pink; //((long *)_defaultimage->line[0])[3] = pink; //((long *)_defaultimage->line[0])[4] = pink; //((long *)_defaultimage->line[0])[5] = pink; //((long *)_defaultimage->line[0])[6] = pink; //((long *)_defaultimage->line[0])[7] = pink; //((long *)_defaultimage->line[0])[8] = pink; //((long *)_defaultimage->line[0])[9] = pink; //((long *)_defaultimage->line[0])[10] = pink; ((long *)_defaultimage->line[1])[0] = black; ((long *)_defaultimage->line[1])[1] = black; //((long *)_defaultimage->line[1])[2] = pink; //((long *)_defaultimage->line[1])[3] = pink; //((long *)_defaultimage->line[1])[4] = pink; //((long *)_defaultimage->line[1])[5] = pink; //((long *)_defaultimage->line[1])[6] = pink; //((long *)_defaultimage->line[1])[7] = pink; //((long *)_defaultimage->line[1])[8] = pink; //((long *)_defaultimage->line[1])[9] = pink; //((long *)_defaultimage->line[1])[10] = pink; ((long *)_defaultimage->line[2])[0] = black; ((long *)_defaultimage->line[2])[1] = white; ((long *)_defaultimage->line[2])[2] = black; //((long *)_defaultimage->line[2])[3] = pink; //((long *)_defaultimage->line[2])[4] = pink; //((long *)_defaultimage->line[2])[5] = pink; //((long *)_defaultimage->line[2])[6] = pink; //((long *)_defaultimage->line[2])[7] = pink; //((long *)_defaultimage->line[2])[8] = pink; //((long *)_defaultimage->line[2])[9] = pink; //((long *)_defaultimage->line[2])[10] = pink; ((long *)_defaultimage->line[3])[0] = black; ((long *)_defaultimage->line[3])[1] = white; ((long *)_defaultimage->line[3])[2] = white; ((long *)_defaultimage->line[3])[3] = black; //((long *)_defaultimage->line[3])[4] = pink; //((long *)_defaultimage->line[3])[5] = pink; //((long *)_defaultimage->line[3])[6] = pink; //((long *)_defaultimage->line[3])[7] = pink; //((long *)_defaultimage->line[3])[8] = pink; //((long *)_defaultimage->line[3])[9] = pink; //((long *)_defaultimage->line[3])[10] = pink; ((long *)_defaultimage->line[4])[0] = black; ((long *)_defaultimage->line[4])[1] = white; ((long *)_defaultimage->line[4])[2] = white; ((long *)_defaultimage->line[4])[3] = white; ((long *)_defaultimage->line[4])[4] = black; //((long *)_defaultimage->line[4])[5] = pink; //((long *)_defaultimage->line[4])[6] = pink; //((long *)_defaultimage->line[4])[7] = pink; //((long *)_defaultimage->line[4])[8] = pink; //((long *)_defaultimage->line[4])[9] = pink; //((long *)_defaultimage->line[4])[10] = pink; ((long *)_defaultimage->line[5])[0] = black; ((long *)_defaultimage->line[5])[1] = white; ((long *)_defaultimage->line[5])[2] = white; ((long *)_defaultimage->line[5])[3] = white; ((long *)_defaultimage->line[5])[4] = white; ((long *)_defaultimage->line[5])[5] = black; //((long *)_defaultimage->line[5])[6] = pink; //((long *)_defaultimage->line[5])[7] = pink; //((long *)_defaultimage->line[5])[8] = pink; //((long *)_defaultimage->line[5])[9] = pink; //((long *)_defaultimage->line[5])[10] = pink; ((long *)_defaultimage->line[6])[0] = black; ((long *)_defaultimage->line[6])[1] = white; ((long *)_defaultimage->line[6])[2] = white; ((long *)_defaultimage->line[6])[3] = white; ((long *)_defaultimage->line[6])[4] = white; ((long *)_defaultimage->line[6])[5] = white; ((long *)_defaultimage->line[6])[6] = black; //((long *)_defaultimage->line[6])[7] = pink; //((long *)_defaultimage->line[6])[8] = pink; //((long *)_defaultimage->line[6])[9] = pink; //((long *)_defaultimage->line[6])[10] = pink; ((long *)_defaultimage->line[7])[0] = black; ((long *)_defaultimage->line[7])[1] = white; ((long *)_defaultimage->line[7])[2] = white; ((long *)_defaultimage->line[7])[3] = white; ((long *)_defaultimage->line[7])[4] = white; ((long *)_defaultimage->line[7])[5] = white; ((long *)_defaultimage->line[7])[6] = white; ((long *)_defaultimage->line[7])[7] = black; //((long *)_defaultimage->line[7])[8] = pink; //((long *)_defaultimage->line[7])[9] = pink; //((long *)_defaultimage->line[7])[10] = pink; ((long *)_defaultimage->line[8])[0] = black; ((long *)_defaultimage->line[8])[1] = white; ((long *)_defaultimage->line[8])[2] = white; ((long *)_defaultimage->line[8])[3] = white; ((long *)_defaultimage->line[8])[4] = white; ((long *)_defaultimage->line[8])[5] = white; ((long *)_defaultimage->line[8])[6] = white; ((long *)_defaultimage->line[8])[7] = white; ((long *)_defaultimage->line[8])[8] = black; //((long *)_defaultimage->line[8])[9] = pink; //((long *)_defaultimage->line[8])[10] = pink; ((long *)_defaultimage->line[9])[0] = black; ((long *)_defaultimage->line[9])[1] = white; ((long *)_defaultimage->line[9])[2] = white; ((long *)_defaultimage->line[9])[3] = white; ((long *)_defaultimage->line[9])[4] = white; ((long *)_defaultimage->line[9])[5] = white; ((long *)_defaultimage->line[9])[6] = white; ((long *)_defaultimage->line[9])[7] = white; ((long *)_defaultimage->line[9])[8] = white; ((long *)_defaultimage->line[9])[9] = black; //((long *)_defaultimage->line[9])[10] = pink; ((long *)_defaultimage->line[10])[0] = black; ((long *)_defaultimage->line[10])[1] = white; ((long *)_defaultimage->line[10])[2] = white; ((long *)_defaultimage->line[10])[3] = white; ((long *)_defaultimage->line[10])[4] = white; ((long *)_defaultimage->line[10])[5] = white; ((long *)_defaultimage->line[10])[6] = black; ((long *)_defaultimage->line[10])[7] = black; ((long *)_defaultimage->line[10])[8] = black; ((long *)_defaultimage->line[10])[9] = black; ((long *)_defaultimage->line[10])[10] = black; ((long *)_defaultimage->line[11])[0] = black; ((long *)_defaultimage->line[11])[1] = white; ((long *)_defaultimage->line[11])[2] = white; ((long *)_defaultimage->line[11])[3] = black; ((long *)_defaultimage->line[11])[4] = white; ((long *)_defaultimage->line[11])[5] = white; ((long *)_defaultimage->line[11])[6] = black; //((long *)_defaultimage->line[11])[7] = pink; //((long *)_defaultimage->line[11])[8] = pink; //((long *)_defaultimage->line[11])[9] = pink; //((long *)_defaultimage->line[11])[10] = pink; ((long *)_defaultimage->line[12])[0] = black; ((long *)_defaultimage->line[12])[1] = white; ((long *)_defaultimage->line[12])[2] = black; //((long *)_defaultimage->line[12])[3] = pink; ((long *)_defaultimage->line[12])[4] = black; ((long *)_defaultimage->line[12])[5] = white; ((long *)_defaultimage->line[12])[6] = white; ((long *)_defaultimage->line[12])[7] = black; //((long *)_defaultimage->line[12])[8] = pink; //((long *)_defaultimage->line[12])[9] = pink; //((long *)_defaultimage->line[12])[10] = pink; ((long *)_defaultimage->line[13])[0] = black; ((long *)_defaultimage->line[13])[1] = black; //((long *)_defaultimage->line[13])[2] = pink; //((long *)_defaultimage->line[13])[3] = pink; ((long *)_defaultimage->line[13])[4] = black; ((long *)_defaultimage->line[13])[5] = white; ((long *)_defaultimage->line[13])[6] = white; ((long *)_defaultimage->line[13])[7] = black; //((long *)_defaultimage->line[13])[8] = pink; //((long *)_defaultimage->line[13])[9] = pink; //((long *)_defaultimage->line[13])[10] = pink; ((long *)_defaultimage->line[14])[0] = black; //((long *)_defaultimage->line[14])[1] = pink; //((long *)_defaultimage->line[14])[2] = pink; //((long *)_defaultimage->line[14])[3] = pink; //((long *)_defaultimage->line[14])[4] = pink; ((long *)_defaultimage->line[14])[5] = black; ((long *)_defaultimage->line[14])[6] = white; ((long *)_defaultimage->line[14])[7] = white; ((long *)_defaultimage->line[14])[8] = black; //((long *)_defaultimage->line[14])[9] = pink; //((long *)_defaultimage->line[14])[10] = pink; //((long *)_defaultimage->line[15])[0] = pink; //((long *)_defaultimage->line[15])[1] = pink; //((long *)_defaultimage->line[15])[2] = pink; //((long *)_defaultimage->line[15])[3] = pink; //((long *)_defaultimage->line[15])[4] = pink; ((long *)_defaultimage->line[15])[5] = black; ((long *)_defaultimage->line[15])[6] = white; ((long *)_defaultimage->line[15])[7] = white; ((long *)_defaultimage->line[15])[8] = black; //((long *)_defaultimage->line[15])[9] = pink; //((long *)_defaultimage->line[15])[10] = pink; //((long *)_defaultimage->line[16])[0] = pink; //((long *)_defaultimage->line[16])[1] = pink; //((long *)_defaultimage->line[16])[2] = pink; //((long *)_defaultimage->line[16])[3] = pink; //((long *)_defaultimage->line[16])[4] = pink; //((long *)_defaultimage->line[16])[5] = pink; ((long *)_defaultimage->line[16])[6] = black; ((long *)_defaultimage->line[16])[7] = white; ((long *)_defaultimage->line[16])[8] = white; ((long *)_defaultimage->line[16])[9] = black; //((long *)_defaultimage->line[16])[10] = pink; //((long *)_defaultimage->line[17])[0] = pink; //((long *)_defaultimage->line[17])[1] = pink; //((long *)_defaultimage->line[17])[2] = pink; //((long *)_defaultimage->line[17])[3] = pink; //((long *)_defaultimage->line[17])[4] = pink; //((long *)_defaultimage->line[17])[5] = pink; ((long *)_defaultimage->line[17])[6] = black; ((long *)_defaultimage->line[17])[7] = white; ((long *)_defaultimage->line[17])[8] = white; ((long *)_defaultimage->line[17])[9] = black; //((long *)_defaultimage->line[17])[10] = pink; //((long *)_defaultimage->line[18])[0] = pink; //((long *)_defaultimage->line[18])[1] = pink; //((long *)_defaultimage->line[18])[2] = pink; //((long *)_defaultimage->line[18])[3] = pink; //((long *)_defaultimage->line[18])[4] = pink; //((long *)_defaultimage->line[18])[5] = pink; //((long *)_defaultimage->line[18])[6] = pink; ((long *)_defaultimage->line[18])[7] = black; ((long *)_defaultimage->line[18])[8] = black; //((long *)_defaultimage->line[18])[9] = pink; //((long *)_defaultimage->line[18])[10] = pink; return true; }
what templatetypedef says:
const char *up_left = "*----------" "**---------" "*0*--------" "*00*-------" "*000*------" // etc ; (int r = 0; < height; ++r) { (int c = 0; c < width; ++c) { switch(up_left[r * width + c]) { case '*': ((long *)_defaultimage->line[r])[c] = black; break; case '0'): ((long *)_defaultimage->line[r])[c] = white; break; } } }
the thing worry if you're tight memory, whether mostly-pink image end being less code "compressed" few assignments 1 byte per pixel in string. if so, can have fun inventing simple byte codes compress images (probably run-length encoding), , interpreter writes correct pixels image.
Comments
Post a Comment