int32_t CTB_AddRecRaster(const char *fname, RecRaster *r, uchar let) { CTB_handle hnd; int32_t num; uchar raster[REC_MAX_RASTER_SIZE], data[CTB_DATA_SIZE] = { 0 }; int32_t wb; Bool32 ret; if (!CTB_open(fname, &hnd, "w")) { if (1) CTB_create(fname, NULL); else CTB_create_gray(fname, NULL); if (!CTB_open(fname, &hnd, "w")) { return FALSE; } } data[1] = (uchar) r->lnPixWidth; data[2] = (uchar) r->lnPixHeight; data[3] = let; if (hnd.signums & (CTB_GRAY_SCALE | CTB_PLANE)) { wb = r->lnPixWidth; memcpy(raster, r->Raster, wb * r->lnPixHeight); } else { wb = ((r->lnPixWidth + 63) / 64) * 8; memcpy(raster, r->Raster, wb * r->lnPixHeight); CTB_align1_lines(raster, r->lnPixWidth, r->lnPixHeight); } ret = CTB_write(&hnd, -1, raster, data); num = hnd.num; CTB_close(&hnd); return ret ? num : -1; }
int16_t rstr_cont_store(RecRaster *r,uchar let, uchar nLns,Rect16 *rect,uchar IsPrint, uchar Prob, uchar Valid, RecVersions *v,uchar control, uchar kegl,uchar column, uchar tabno) { int32_t num; uchar raster[4096],data[CTB_DATA_SIZE]= {0}; int32_t wb, k; Bool32 ret; RecVersions ver; if( !this_ctb.bas ) // || !cont_name[0] ) return 0; data[0]= CTB_OEM_CHARSET; data[1] = (uchar)r->lnPixWidth; data[2] = (uchar)r->lnPixHeight; data[3] = let; //stdAnsiToAscii(let); data[4] = 0; data[31] = nLns; data[32] = 0; data[5] = IsPrint; memcpy(&data[6],rect,sizeof(Rect16)); data[14] = Prob; data[15] = Valid; if( v ) { ver=*v; if( ver.lnAltCnt>4 ) ver.lnAltCnt=4; data[16]=(uchar)ver.lnAltCnt; for(k=0; k<ver.lnAltCnt; k++) { data[17+k*2]= stdAnsiToAscii(ver.Alt[k].Code); data[18+k*2]= ver.Alt[k].Prob; data[28+k] = ver.Alt[k].Method; } } data[25] = (uchar)line_number; // !!! can be great than 255 data[26] = 0;//leo_current_alpha_ndx; data[27] = control; if( datalen>34 ) data[34]=kegl; if( datalen>35 ) data[35]=column; if( datalen>36 ) data[36]=tabno; wb = ((r->lnPixWidth+63)/64)*8; memcpy( raster, r->Raster, wb*r->lnPixHeight); #ifdef _USE_CTB_ CTB_align1_lines(raster, r->lnPixWidth, r->lnPixHeight); ret = CTB_write( &this_ctb, -1, raster, data); if( !ret ) return -1; num = this_ctb.num; return (int16_t)num; // id_rast = last sequentaly saved raster+1 #else ret=-1; num=-1; return -1; #endif }