/**************************************************************************** addchar Attempts to add the given character onto the end of the current line. Returns 1 if this can be done, 0 otherwise. ****************************************************************************/ int addchar(long c) { int smushamount=0,row; char *templine; set_crash(); getletter(c); if (outlinelen+currcharwidth>outlinelenlimit ||inchrlinelen+1>inchrlinelenlimit) { return 0; } templine = (char*)myalloc(sizeof(char)*(outlinelenlimit+1)); for (row=0;row<charheight;row++) { if (right2left) { strcpy(templine,currchar[row]); strcat(templine,outline[row]+smushamount); strcpy(outline[row],templine); } else strcat(outline[row],currchar[row]+smushamount); } free(templine); outlinelen = MYSTRLEN(outline[0]); inchrline[inchrlinelen++] = c; return 1; }
void tektext_part(t_bunny_pixelarray *out, const char *str, t_font *font, t_bunny_position *pos) { int i; int limit = 0; t_bunny_position bis; limit = getletter(); bis.x = pos->x; bis.y = pos->y; i = 0; while (str[i] != '\0' && i < limit) { if (str[i] == '\n') { bis.x = pos->x; bis.y += font->letter.y * font->scale + 1;; } else { draw_letter(out, font, str[i], &bis); bis.x += font->letter.x * font->scale + 1; } ++i; } }
static int addchar(inchr c) { int smushamount,row,k; char *templine; getletter(c); smushamount = smushamt(); if (outlinelen+currcharwidth-smushamount>outlinelenlimit ||inchrlinelen+1>inchrlinelenlimit) { return 0; } templine = (char*)myalloc(sizeof(char)*(outlinelenlimit+1)); for (row=0;row<charheight;row++) { if (right2left) { strcpy(templine,currchar[row]); for (k=0;k<smushamount;k++) { templine[currcharwidth-smushamount+k] = smushem(templine[currcharwidth-smushamount+k],outputline[row][k]); } strcat(templine,outputline[row]+smushamount); strcpy(outputline[row],templine); } else { for (k=0;k<smushamount;k++) { outputline[row][outlinelen-smushamount+k] = smushem(outputline[row][outlinelen-smushamount+k],currchar[row][k]); } strcat(outputline[row],currchar[row]+smushamount); } } myfree(templine); outlinelen = MYSTRLEN(outputline[0]); inchrline[inchrlinelen++] = c; return 1; }