Ignore:
Timestamp:
Jul 31, 2013, 6:13:53 PM (9 years ago)
Author:
Sam Hocevar
Message:

core: refactor Palette so that it uses Array<u8vec3> instead of uint8_t *.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • abuse/branches/lol/src/gamma.cpp

    r686 r694  
    2828
    2929extern int dev_ok;
    30 palette *old_pal = NULL;
     30Palette *old_pal = NULL;
    3131
    3232class gray_picker : public spicker
     
    6868}
    6969
    70 void gamma_correct(palette *&pal, int force_menu)
     70void gamma_correct(Palette *&pal, int force_menu)
    7171{
    7272    long dg=0,old_dg=0;
     
    8080        delete pal;
    8181        pal = old_pal;
    82         old_pal = NULL;
     82        old_pal = nullptr;
    8383    }
    8484
     
    9494        }
    9595        // load in a fine gray palette they can chose from
    96         palette *gray_pal = pal->copy();
    97         int i = 0;
     96        Palette *gray_pal = pal->Copy();
    9897        int tc = 32;
    9998
    100         for(; i < tc; i++)
    101         {
    102             gray_pal->set(i, i * 4, i * 4, i * 4);
    103         }
     99        for(int i = 0; i < tc; i++)
     100            gray_pal->SetColor(i, u8vec3(i * 4));
    104101
    105102        gray_pal->load();
     
    107104        int wm_bc = wm->bright_color(), wm_mc = wm->medium_color(), wm_dc = wm->dark_color();
    108105
    109         int br_r = pal->red(wm_bc) + 20;
    110         if(br_r > 255)
    111             br_r = 255;
    112         int br_g = pal->green(wm_bc) + 20;
    113         if(br_g > 255)
    114             br_g = 255;
    115         int br_b = pal->blue(wm_bc) + 20;
    116         if(br_b > 255)
    117             br_b = 255;
     106        u8vec3 br = (u8vec3)min((ivec3)pal->GetColor(wm_bc), ivec3(255 - 20)) + u8vec3(20);
     107        u8vec3 md = (u8vec3)max((ivec3)pal->GetColor(wm_mc), ivec3(20)) - u8vec3(20);
     108        u8vec3 dr = (u8vec3)max((ivec3)pal->GetColor(wm_dc), ivec3(40)) - u8vec3(40);
    118109
    119         int md_r = pal->red(wm_mc) - 20;
    120         if(md_r < 0)
    121             md_r = 0;
    122         int md_g = pal->green(wm_mc) - 20;
    123         if(md_g < 0)
    124             md_g = 0;
    125         int md_b = pal->blue(wm_mc) - 20;
    126         if(md_b < 0)
    127             md_b = 0;
    128 
    129         int dr_r = pal->red(wm_dc) - 40;
    130         if(dr_r < 0)
    131             dr_r = 0;
    132         int dr_g = pal->green(wm_dc) - 40;
    133         if(dr_g < 0)
    134             dr_g = 0;
    135         int dr_b = pal->blue(wm_dc) - 40;
    136         if(dr_b < 0)
    137             dr_b = 0;
    138 
    139         wm->set_colors(gray_pal->find_closest(br_r, br_g, br_b),
    140             gray_pal->find_closest(md_r, md_g, md_b),
    141             gray_pal->find_closest(dr_r, dr_g, dr_b));
     110        wm->set_colors(gray_pal->FindClosest(br),
     111                       gray_pal->FindClosest(md),
     112                       gray_pal->FindClosest(dr));
    142113
    143114        int sh = wm->font()->Size().y + 35;
     
    211182
    212183    old_pal = pal;
    213     pal = new palette;
     184    pal = new Palette;
    214185    for(int i = 0; i < 256; i++)
    215186    {
    216         uint8_t oldr, oldg, oldb;
    217         old_pal->get(i, oldr, oldg, oldb);
    218         pal->set(i, (int)(lol::pow(oldr / 255.0, gamma) * 255),
    219             (int)(lol::pow(oldg / 255.0, gamma) * 255),
    220             (int)(lol::pow(oldb / 255.0, gamma) * 255));
     187        u8vec3 old = old_pal->GetColor(i);
     188        pal->SetColor(i, u8vec3(lol::pow(old.r / 255.0, gamma) * 255,
     189                                lol::pow(old.g / 255.0, gamma) * 255,
     190                                lol::pow(old.b / 255.0, gamma) * 255));
    221191    }
    222192
Note: See TracChangeset for help on using the changeset viewer.