rtoss - Diff between revs 316 and 321

Subversion Repositories:
Rev:
Show entire file - Ignore whitespace
Rev 316 Rev 321
Line 68... Line 68...
68         int offx; /* offset y (pixel) */ 68         int offx; /* offset y (pixel) */
69         int offy; /* offset y */ 69         int offy; /* offset y */
70 } font; 70 } font;
71 int numcol; /*  numberOfColumns */ 71 int numcol; /*  numberOfColumns */
72 int dwidth; 72 int dwidth;
-   73 int bbx_w, bbx_h, bbx_offx, bbx_offy;
73 char outfileBdfP[FILENAMECHARMAX]; 74 char outfileBdfP[FILENAMECHARMAX];
74 FILE *outP; 75 FILE *outP;
75 76
76 77
77 /* func prototype */ 78 /* func prototype */
Line 260... Line 261...
260                                 nglyph++; 261                                 nglyph++;
261                         } 262                         }
262                 }else{ /*  stat != INBITMAP */ 263                 }else{ /*  stat != INBITMAP */
263                         switch(lineP[0]){ 264                         switch(lineP[0]){
264                         case 'B': 265                         case 'B':
265                                 if(strncmp(lineP, "BBX", 3)==0) -  
266                                         ; /*  do nothing */ -  
267                                 else if(strncmp(lineP, "BITMAP", 6)==0) -  
-   266                                 if(strncmp(lineP, "BBX", 3)==0){
-   267                                         strcpy(strP, lineP);
-   268                                         tokenP = gettoken(strP);
-   269                                         tokenP = gettoken(tokenP + (int)strlen(tokenP) + 1);
-   270                                         bbx_w = atoi(tokenP);
-   271                                         tokenP = gettoken(tokenP + (int)strlen(tokenP) + 1);
-   272                                         bbx_h = atoi(tokenP);
-   273                                         tokenP = gettoken(tokenP + (int)strlen(tokenP) + 1);
-   274                                         bbx_offx = atoi(tokenP);
-   275                                         tokenP = gettoken(tokenP + (int)strlen(tokenP) + 1);
-   276                                         bbx_offy = atoi(tokenP);
-   277                                 } else if(strncmp(lineP, "BITMAP", 6)==0)
268                                         st = INBITMAP; 278                                         st = INBITMAP;
269                                 break; /* lines of BBX, BITMAP is written later */ 279                                 break; /* lines of BBX, BITMAP is written later */
270                         case 'D': 280                         case 'D':
271                                 if(strncmp(lineP, "DWIDTH ", 7)==0){ 281                                 if(strncmp(lineP, "DWIDTH ", 7)==0){
272                                         strcpy(strP, lineP); 282                                         strcpy(strP, lineP);
273                                         tokenP = gettoken(strP); 283                                         tokenP = gettoken(strP);
274                                         tokenP = gettoken(tokenP + (int)strlen(tokenP) + 1); 284                                         tokenP = gettoken(tokenP + (int)strlen(tokenP) + 1);
275                                         dwidth = atoi(tokenP); 285                                         dwidth = atoi(tokenP);
276                                 } 286                                 }
277                                 goto others; -  
-   287                                 break;
278                         case 'F': 288                         case 'F':
279                                 if(strncmp(lineP, "FONTBOUNDINGBOX ", 16)==0){ 289                                 if(strncmp(lineP, "FONTBOUNDINGBOX ", 16)==0){
280                                         strcpy(strP, lineP); 290                                         strcpy(strP, lineP);
281                                         tokenP = gettoken(strP); 291                                         tokenP = gettoken(strP);
282                                         tokenP = gettoken(tokenP + (int)strlen(tokenP) + 1); 292                                         tokenP = gettoken(tokenP + (int)strlen(tokenP) + 1);
Line 299... Line 309...
299                                         d_printf("font.h=%d ", font.h); 309                                         d_printf("font.h=%d ", font.h);
300                                         d_printf("font.offx=%d ", font.offx); 310                                         d_printf("font.offx=%d ", font.offx);
301                                         d_printf("font.offy=%d\n", font.offy); 311                                         d_printf("font.offy=%d\n", font.offy);
302                                 } 312                                 }
303                                 /*  go next */ 313                                 /*  go next */
304 others: -  
305                         default: 314                         default:
306                                 val = fwrite(lineP, 1, strlen(lineP), outP); 315                                 val = fwrite(lineP, 1, strlen(lineP), outP);
307                                 if(val != (int)strlen(lineP)) 316                                 if(val != (int)strlen(lineP))
308                                         exiterror("cannot write '%s'\n", outfileBdfP); 317                                         exiterror("cannot write '%s'\n", outfileBdfP);
309                         } /* switch */ 318                         } /* switch */
Line 367... Line 376...
367  *     and change to BDF hexadecimal 376  *     and change to BDF hexadecimal
368  */ 377  */
369 void newglyphwrite(FILE *outP, int nglyph, char *imgP){ 378 void newglyphwrite(FILE *outP, int nglyph, char *imgP){
370         char *boxP; 379         char *boxP;
371         int i,j,k, x,y, val; 380         int i,j,k, x,y, val;
-   381         int width, delta; /* width of a glyph (abs.) */
372         int widthaligned; /* width of a glyph (byte-aligned) */ 382         int widthaligned; /* width of a glyph (byte-aligned) */
373         char *bitstrP; /* BITMAP strings */ 383         char *bitstrP; /* BITMAP strings */
374         char strP[LINECHARMAX]; /* tmp buffer */ 384         char strP[LINECHARMAX]; /* tmp buffer */
375         static char *hex2binP[]= { 385         static char *hex2binP[]= {
376                 "0000","0001","0010","0011","0100","0101","0110","0111", 386                 "0000","0001","0010","0011","0100","0101","0110","0111",
Line 378... Line 388...
378         }; 388         };
379 389
380         /* 390         /*
381          * allocate 'box' area for a glyph image 391          * allocate 'box' area for a glyph image
382          */ 392          */
383         //widthaligned = (dwidth+7) / 8 * 8; -  
384         widthaligned = (dwidth+7) / 8 * 8; -  
-   393         //widthaligned = (font.w+7) / 8 * 8;
-   394         delta = bbx_w-bbx_offx-font.offx;
-   395         width = delta>dwidth ? delta : dwidth-(font.offx < 0 ? font.offx : 0);
-   396         widthaligned = (width+7) / 8 * 8;
385         boxP = malloc(widthaligned*font.h); 397         boxP = malloc(widthaligned*font.h);
386         if(boxP == NULL) 398         if(boxP == NULL)
387                 exiterror("cannot allocate memory newglyphwrite %dbytes\n", widthaligned*font.h); 399                 exiterror("cannot allocate memory newglyphwrite %dbytes\n", widthaligned*font.h);
388         memset(boxP, '0', widthaligned*font.h); 400         memset(boxP, '0', widthaligned*font.h);
389 401
Line 394... Line 406...
394         y = (font.h+img.sp) * (nglyph/numcol) + img.sp; 406         y = (font.h+img.sp) * (nglyph/numcol) + img.sp;
395         /*   one glyph width   column */ 407         /*   one glyph width   column */
396         x = (font.w+img.sp) * (nglyph%numcol) + img.sp; 408         x = (font.w+img.sp) * (nglyph%numcol) + img.sp;
397 409
398         for(i=0; i<font.h; i++) 410         for(i=0; i<font.h; i++)
399                 for(j=0; j<dwidth; j++) -  
-   411                 for(j=0; j<width; j++)
400                         *(boxP + i*widthaligned + j) = *(imgP + (y+i)*img.w + x+j); 412                         *(boxP + i*widthaligned + j) = *(imgP + (y+i)*img.w + x+j);
401 413
402         /* 414         /*
403          * change to hexadecimal 415          * change to hexadecimal
404          */ 416          */
Line 406... Line 418...
406         if(bitstrP == NULL) 418         if(bitstrP == NULL)
407                 exiterror("cannot allocate memory: bitstrP %dbytes\n",LINECHARMAX*font.h); 419                 exiterror("cannot allocate memory: bitstrP %dbytes\n",LINECHARMAX*font.h);
408         memset(bitstrP, 0x00, LINECHARMAX*font.h); 420         memset(bitstrP, 0x00, LINECHARMAX*font.h);
409 421
410         /* write BBX , BITMAP to tmpVariable */ 422         /* write BBX , BITMAP to tmpVariable */
411         sprintf(bitstrP, "BBX %d %d %d %d\nBITMAP\n", -  
412                 dwidth, font.h, font.offx, font.offy); -  
-   423         sprintf(bitstrP, "DWIDTH %d 0\nBBX %d %d %d %d\nBITMAP\n",
-   424                 width, width, font.h, 0, font.offy);
413 425
414         /* write bitmapData to tmpVariable */ 426         /* write bitmapData to tmpVariable */
415         for(i=0; i<font.h; i++){ 427         for(i=0; i<font.h; i++){
416                 for(j=0; j<widthaligned; j+=4){ 428                 for(j=0; j<widthaligned; j+=4){
417                         for(k=0; k<16; k++){ 429                         for(k=0; k<16; k++){