u32 color_find(const rgba_t *color, const rgba_t *clut, u32 clut_size) { u32 idx, best_idx, error, best_error; best_idx = 0; best_error = color_error(&clut[0], color); for (idx = 1; idx < clut_size; idx++) { error = color_error(&clut[idx], color); if (error < best_error) { best_idx = idx; best_error = error; } } return best_idx; }
void MainWindow::on_calc_expr_clicked() { unsigned error = 0; char result_str[50]; QColor color_error(255, 0, 0), color_normal(0, 0, 0); if(expr_text_changed) { if(!ui->expr_text_edit->toPlainText().isEmpty()) { error = P.parse_text_for_calc(ui->expr_text_edit->toPlainText().toStdString().c_str(), value_expr); if(error == 0) { ui->history_text->setTextColor(color_normal); del_zero_from_result(value_expr, result_str); ui->history_text->append(ui->expr_text_edit->toPlainText() + " = " + result_str); } else { for(int i = 0; i < NUM_ERROR; i++) { if(error == error_table[i].num_error) { ui->history_text->setTextColor(color_error); ui->history_text->append(QString::fromUtf8(error_table[i].text_error)); break; } } } } else { ui->history_text->setTextColor(color_error); ui->history_text->append(QString::fromUtf8("выражение отсутствует")); } } }
/************************************************************* ... *************************************************************/ void alloc_standard_colors(void) { int i; for(i=0; i<COLOR_STD_LAST; i++) { XColor mycolor; mycolor.red=colors_standard_rgb[i].r<<8; mycolor.green=colors_standard_rgb[i].g<<8; mycolor.blue=colors_standard_rgb[i].b<<8; if(XAllocColor(display, cmap, &mycolor)) colors_standard[i]=mycolor.pixel; else color_error(); } }
/*************************************************************************** ... ***************************************************************************/ struct Sprite *load_xpmfile(char *filename) { struct Sprite *mysprite; Pixmap mypixmap, mask_bitmap; int err; XpmAttributes attributes; attributes.extensions = NULL; attributes.valuemask = XpmCloseness|XpmColormap; attributes.colormap = cmap; attributes.closeness = 40000; again: if((err=XpmReadFileToPixmap(display, root_window, filename, &mypixmap, &mask_bitmap, &attributes)!=XpmSuccess)) { printf("%d\n", err); if(err==XpmColorError || err==XpmColorFailed) { color_error(); goto again; } log(LOG_FATAL, "failed reading XPM file: %s", filename); exit(1); } if(!(mysprite=(struct Sprite *)malloc(sizeof(struct Sprite)))) { log(LOG_FATAL, "failed mallocing sprite struct for %s", filename); exit(1); } mysprite->pixmap=mypixmap; mysprite->mask=mask_bitmap; mysprite->has_mask=(mask_bitmap!=0); mysprite->width=attributes.width; mysprite->height=attributes.height; return mysprite; }