static void update_adjusted_color(palette_t *palette, UINT32 group, UINT32 index) { UINT32 finalindex = group * palette->numcolors + index; palette_client *client; rgb_t adjusted; /* compute the adjusted value */ adjusted = adjust_palette_entry(palette->entry_color[index], palette->group_bright[group] + palette->brightness, palette->group_contrast[group] * palette->entry_contrast[index] * palette->contrast, palette->gamma_map); /* if not different, ignore */ if (palette->adjusted_color[finalindex] == adjusted) return; /* otherwise, modify the adjusted color array */ palette->adjusted_color[finalindex] = adjusted; palette->adjusted_rgb15[finalindex] = rgb_to_rgb15(adjusted); /* mark dirty in all clients */ for (client = palette->client_list; client != NULL; client = client->next) { client->live.dirty[finalindex / 32] |= 1 << (finalindex % 32); client->live.mindirty = MIN(client->live.mindirty, finalindex); client->live.maxdirty = MAX(client->live.maxdirty, finalindex); } }
void palette_t::update_adjusted_color(uint32_t group, uint32_t index) { // compute the adjusted value rgb_t adjusted = adjust_palette_entry(m_entry_color[index], m_group_bright[group] + m_brightness, m_group_contrast[group] * m_entry_contrast[index] * m_contrast, m_gamma_map); // if not different, ignore uint32_t finalindex = group * m_numcolors + index; if (m_adjusted_color[finalindex] == adjusted) return; // otherwise, modify the adjusted color array m_adjusted_color[finalindex] = adjusted; m_adjusted_rgb15[finalindex] = adjusted.as_rgb15(); // mark dirty in all clients for (palette_client *client = m_client_list; client != nullptr; client = client->next()) client->mark_dirty(finalindex); }