HTStyle *HTStyleRead(HTStyle *style, HTStream *stream) { char myTag[STYLE_NAME_LENGTH]; char fontName[STYLE_NAME_LENGTH]; NXTextStyle *p; int tab; int gotpara; /* flag: have we got a paragraph definition? */ NXScanf(stream, "%s%s%f%d", myTag, fontName, &style->fontSize, &gotpara); if (gotpara) { if (!style->paragraph) { style->paragraph = malloc(sizeof(*(style->paragraph))); if (!style->paragraph) outofmem(__FILE__, "HTStyleRead"); style->paragraph->tabs = 0; } p = style->paragraph; NXScanf(stream, "%f%f%f%f%hd%f%f%hd", &p->indent1st, &p->indent2nd, &p->lineHt, &p->descentLine, &p->alignment, &style->spaceBefore, &style->spaceAfter, &p->numTabs); FREE(p->tabs); p->tabs = malloc(p->numTabs * sizeof(p->tabs[0])); if (!p->tabs) outofmem(__FILE__, "HTStyleRead"); for (tab = 0; tab < p->numTabs; tab++) { NXScanf(stream, "%hd%f", &p->tabs[tab].kind, &p->tabs[tab].x); } } else { /* No paragraph */ FREE(style->paragraph); } /* if no paragraph */ StrAllocCopy(style->SGMLTag, myTag); if (strcmp(fontName, NONE_STRING) == 0) style->font = 0; else style->font =[Font newFont: fontName size:style->fontSize]; return NULL; }
/* Read a stylesheet from a typed stream ** ------------------------------------- ** ** Reads a style sheet from a stream. If new styles have the same names ** as existing styles, they replace the old ones without changing the ids. */ #ifdef NEXT_SUPRESS /* Only on the NeXT */ HTStyleSheet * HTStyleSheetRead(HTStyleSheet * self, NXStream * stream) { int numStyles; int i; HTStyle * style; char styleName[80]; NXScanf(stream, " %d ", &numStyles); if (TRACE) fprintf(stderr, "Stylesheet: Reading %d styles\n", numStyles); for (i=0; i<numStyles; i++) { NXScanf(stream, "%s", styleName); style = HTStyleNamed(self, styleName); if (!style) { style = HTStyleNewNamed(styleName); (void) HTStyleSheetAddStyle(self, style); } (void) HTStyleRead(style, stream); if (TRACE) HTStyleDump(style); } return self; }