char* iupMatrixGetMarkAttrib(Ihandle* ih, int lin, int col) { if (ih->data->mark_mode == IMAT_MARK_NO) return "0"; if (lin >= 0 && col >= 0) /* both are specified */ { if (!iupMatrixCheckCellPos(ih, lin, col)) return NULL; if (ih->data->mark_mode == IMAT_MARK_CELL) { if (lin == 0 || col == 0) /* title can NOT have a mark */ return NULL; if (ih->data->callback_mode) { IFnii mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB"); if (mark_cb) { if (mark_cb(ih, lin, col)) return "1"; else return "0"; } else return NULL; /* check the hash table */ } else { if (ih->data->cells[lin][col].flags & IMAT_IS_MARKED) return "1"; else return "0"; } } else { if (ih->data->mark_mode & IMAT_MARK_LIN && lin>0 && ih->data->lines.dt[lin].flags & IMAT_IS_MARKED) return "1"; if (ih->data->mark_mode & IMAT_MARK_COL && col>0 && ih->data->columns.dt[col].flags & IMAT_IS_MARKED) return "1"; return "0"; } } return NULL; }
char* iupMatrixGetMarkAttrib(Ihandle* ih, const char* name_id) { int lin = 0, col = 0; if (ih->data->mark_mode == IMAT_MARK_NO) return "0"; if (iupStrToIntInt(name_id, &lin, &col, ':') == 2) { if (!iupMatrixCheckCellPos(ih, lin, col)) return NULL; if (ih->data->mark_mode == IMAT_MARK_CELL) { if (lin == 0 || col == 0) /* title can NOT have a mark */ return NULL; if (ih->data->callback_mode) { IFnii mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB"); if (mark_cb) { if (mark_cb(ih, lin, col)) return "1"; else return "0"; } else return NULL; /* let check the hash table */ } else { if (ih->data->cells[lin][col].flags & IUPMAT_MARK) return "1"; else return "0"; } } else { if (ih->data->mark_mode & IMAT_MARK_LIN && lin!=0 && ih->data->lines.flags[lin] & IUPMAT_MARK) return "1"; if (ih->data->mark_mode & IMAT_MARK_COL && col!=0 && ih->data->columns.flags[col] & IUPMAT_MARK) return "1"; return "0"; } } return NULL; }