Beispiel #1
0
static CSTR_rast ed_end_word(CSTR_rast cs,uchar *str,uchar *word_len)
{
CSTR_rast       c=cs;
CSTR_rast_attr  attr;
int16_t           i;
RecVersions     vers;

CSTR_GetCollection(c,&vers);
*str++  = vers.Alt[0].Code;
i=1;
do{
  c=CSTR_GetNext(c);
  CSTR_GetCollection(c,&vers);
  *str++  = vers.Alt[0].Code;
  CSTR_GetAttr(c,&attr);
  i++;
  }while( c && !memchr(right_limit_word,vers.Alt[0].Code,sizeof(right_limit_word)) &&
          !(attr.flg&CSTR_f_fict) && i<MAX_LEN_WORD-1);
c=c ? c : CSTR_GetLastRaster(CSTR_GetRasterLine(cs));
if( i )
    {
    i--;
    str--;
    }
*str='\0';
*word_len = (uchar)i;
return c;
}
Beispiel #2
0
static void show_spell(CSTR_rast c)
{
uchar   wrd[80],buf[160],*w=wrd, lang;
Bool32  nonrec=FALSE;
CSTR_rast_attr  attr;
UniVersions     uni;
CSTR_rast       co=c;
*w=0;
do{
    CSTR_GetAttr(c, &attr);
    c=CSTR_GetPrev(c);
    }
    while( c && attr.flg&(CSTR_f_let|CSTR_f_bad) );
if( !c )
    c=CSTR_GetNext(CSTR_GetFirstRaster(CSTR_GetRasterLine(co)));
else
    c=CSTR_GetNext(CSTR_GetNext(c));
CSTR_GetAttr(c,&attr);
for(lang=attr.language;c;c=CSTR_GetNext(c))
    {
    CSTR_GetAttr(c,&attr);
    if(!(attr.flg&(CSTR_f_let|CSTR_f_bad)) )
        break;
    if( attr.flg&CSTR_f_bad )
        nonrec=TRUE;
    CSTR_GetCollectionUni(c,&uni);
    strcat(w,uni.Alt[0].Code);
    }

strcpy(buf,"<");
strcat(buf,wrd);
strcat(buf,"> static : ");
if( rpstr_txt_spell(wrd,lang)        )
    strcat(buf,"y");
else
    strcat(buf," n");
Snap_Console(buf);
return;
}
Beispiel #3
0
static CSTR_rast ed_next_word(CSTR_rast cs)
{
CSTR_rast       c=cs;
CSTR_rast_attr  attr;
RecVersions     vers;

CSTR_GetAttr(c,&attr);
if( attr.flg==CSTR_f_fict && attr.col==0x7fff )
    return (CSTR_rast)0; // last rast
do{
  c=CSTR_GetNext(c);
  CSTR_GetAttr(c,&attr);
  CSTR_GetCollection(c,&vers);
  }while( c && memchr(left_limit_word,vers.Alt[0].Code,sizeof(left_limit_word)) &&
          !(attr.flg&CSTR_f_fict) );

return (attr.flg&CSTR_f_fict)?(CSTR_rast)0:c;
}
Beispiel #4
0
void ed_make_word(CSTR_rast b, CSTR_rast e)
{
uchar           *l,p;
CSTR_rast       c;
UniVersions     uni;
int16_t           k,i,n,h,wb;
CSTR_rast_attr  a;
int16_t           top,bottom,left,right;
/*
struct fragm_disk
{
uchar code;
uchar fragm_numb;
uint16_t depth;
};

struct fragm_disk_descr
{
uchar code;
uint16_t row;
uint16_t col;
uint16_t height;
uint16_t w_width;
char type;
uchar kegl;
uchar font;
uchar language;//reserv;
uchar type_underl;
};

struct sheet_disk_descr
{
uchar code;
char quant_fragm;
uint16_t sheet_numb;
uint16_t descr_lth;
uchar byte_flag;
uint16_t resolution;
uint16_t  incline;
char tabl[13];
};
*/
for(top=10000,bottom=0,left=10000,right=0,c=b;c&&c!=e;c=CSTR_GetNext(c))
    {
    CSTR_GetAttr(c,&a);
    if( a.col<left )
        left = a.col;
    if( a.col+a.w>right )
        right = a.col+a.w;
    if( a.row<top )
        top = a.row;
    if( a.row+a.h>bottom )
        bottom = a.row+a.h;
    if( c==b )
        {
        language=a.language;
        }
    }
h = bottom-top-1;
wb= (right-left-1+7)/8;
//    start sheet_disk_descr
    p   =0x0a/*SS_SHEET_DESCR*//*f.code*/; ed_write((uchar*)&p,1);
    p   =1/*f.quant_fragm*/; ed_write((uchar*)&p,1);
    n   =0/*f.sheet_numb*/;  ed_write((uchar*)&n,2);
    n   =0x26/*f.descr_lth*/;  ed_write((uchar*)&n,2);
    p   =0/*f.byte_flag*/; ed_write((uchar*)&p,1);
    n   =300/*f.resolution*/;  ed_write((uchar*)&n,2);
    n   =0/*f.incline*/;  ed_write((uchar*)&n,2);
    p   =0/*f.res1*/; ed_write((uchar*)&p,1);
    n   =0/*f.res2-3*/;  ed_write((uchar*)&n,2);
    n   =0/*f.res4-5*/;  ed_write((uchar*)&n,2);
    n   =0/*f.res6-7*/;  ed_write((uchar*)&n,2);
    n   =0/*f.res8-9*/;  ed_write((uchar*)&n,2);
    n   =0/*f.res10-11*/;  ed_write((uchar*)&n,2);
    n   =0/*f.res12-13*/;  ed_write((uchar*)&n,2);

// start fragm_disk_descr
    p   =0x0b/*SS_FRAGMENT*//*f.code*/; ed_write((uchar*)&p,1);
    n   =0/*f.row*/;       ed_write((uchar*)&n,2);
    n   =0/*f.col*/;       ed_write((uchar*)&n,2);
    n   =h/*f.heigh*/;     ed_write((uchar*)&n,2);
    n   =wb/*f.w_width*/;  ed_write((uchar*)&n,2);
    p   =0/*FD_TYPE_TEXT*//*f.type*/; ed_write((uchar*)&p,1);
    p   =10/*f.kegl*/;     ed_write((uchar*)&p,1);
    p   =0/*f.font*/;      ed_write((uchar*)&p,1);
    p   = language;        ed_write((uchar*)&p,1);
    p   =0/*f.type_underl*/;  ed_write((uchar*)&p,1);

 // start fragm_disk
    p   =0x0b/*SS_FRAGMENT*//*f.code*/; ed_write((uchar*)&p,1);
    p   =0/*f.fragm_numb*/;  ed_write((uchar*)&p,1);
    n   =0/*f.depth*/;       ed_write((uchar*)&n,2);
 for(c=b;c&&c!=e;c=CSTR_GetNext(c))
    {
    CSTR_GetCollectionUni(c,&uni);
    if( uni.lnAltCnt && !uni.Alt[0].Code[0] )
        continue;
    CSTR_GetAttr(c,&a);
    // start bitmap ref
    p   =0/*SS_BITMAP_REF*/; ed_write((uchar*)&p,1);
    p   =a.cpos;        ed_write((uchar*)&p,1);
    n   =a.r_row;       ed_write((uchar*)&n,2);
    n   =a.r_col;       ed_write((uchar*)&n,2);
    n   =a.h;           ed_write((uchar*)&n,2);
    n   =a.w;           ed_write((uchar*)&n,2);
    // stop bitmap ref
    n=(int16_t)uni.lnAltCnt;
    if(n>7) n=7;
    if(n<1) n=1;
    for(k=i=0;k<n;)
        {
        p=uni.Alt[i].Prob;
        if( p&1 )   p--;
        if( !p  )   p=2;    // all odd propability
        for(l = &uni.Alt[i++].Code[0];*l && k<n;l++,k++)
            { // for ligas : strlen(uni.Alt[i].Code)>1
            ed_write(l,1);
            if( k==n-1 )
                p = p+1; // last even propability
            ed_write(&p,1);
            }

        }
  }

return;
}