home *** CD-ROM | disk | FTP | other *** search
- /*
- winsave.c
-
- % sf_reqsave, sfile_SaveComment, strnewlclip
-
- OWL 1.1
- Copyright (c) 1988, 1989 by Oakland Group, Inc.
- ALL RIGHTS RESERVED.
-
- Revision History:
- -----------------
- 09/01/89 jdc added win_IsCharSize
- */
-
- #include "oakhead.h"
- #include "disppriv.h"
- #include "jadecl.h"
- #include "symldecl.h"
-
- #include "winod.h"
- #include "bordobj.h"
- #include "winsfile.h"
- #include "winspriv.h"
-
- OSTATIC objreq_func (winreq_save);
-
- void win_SaveInit()
- {
- winreq_savefptr = winreq_save;
- }
-
- int winreq_save(objdata, msg, indata, outdata)
- VOID *objdata;
- int msg; /* message */
- VOID *indata; /* message input data */
- VOID *outdata; /* message output data */
- {
- char *title = NULL;
- char *s[4];
- unsigned feature;
- sfile_type sfile;
- win_type win;
- opbox box;
- int shadx, shady;
-
- oak_notused(msg);
- oak_notused(outdata);
-
- sfile = (sfile_type)indata;
- win = winod_GetSelf((win_od *)objdata);
-
- /* win info:
- ymin, xmin, ymax, xmax, clip,
- shadow x, shadow y, shadow attr, border attr, border features,
- font, border, border title, mouse, explode
- */
- bord_Do(win, BDM_GETTITLE, NULL, &title);
- if (title != NULL) {
- strnewlclip(title);
- }
- bord_Do(win, BDM_GETFEATURE, NULL, &feature);
-
- box.xmin = win_GetXmin(win);
- box.xmax = win_GetXmax(win);
- box.ymin = win_GetYmin(win);
- box.ymax = win_GetYmax(win);
- shadx = win_GetShadowX(win);
- shady = win_GetShadowY(win);
-
- if (win_IsCharSize(win)) {
- box.xmin = win_GetLeftCol(win);
- box.ymin = win_GetTopRow(win);
- box.xmax = win_GetRightCol(win);
- box.ymax = win_GetBotRow(win);
- shadx /= win_GetFontWidth(win);
- shady /= win_GetFontHeight(win);
- }
-
- sprintf(sfile->buf, "%d %d %d %d %d %d %d %d %d %d\n",
- box.ymin, box.xmin, box.ymax, box.xmax,
- win_IsParentClip(win), shadx, shady,
- (int)win_GetShadowAttr(win), (int)bord_GetAttr(win), feature);
-
- if (!bfile_Write(sfile->bfile, sfile->buf, strlen(sfile->buf))) {
- return(FALSE);
- }
-
- s[0] = (win_GetFontHandle(win) == -1) ?
- ((win_GetFont(win) == NULL) ? "" : sfile_FindFontName(sfile, win_GetFont(win)))
- : win_GetFontName(win, sfile);
-
- s[1] = (win_GetBorderHandle(win) == -1) ?
- ((win_border(win) == NULL) ? "" : sfile_FindBorderName(sfile, win_GetBorderFunc(win)))
- : win_GetBorderName(win, sfile);
-
- s[2] = (win_GetMouseHandle(win) == -1) ?
- ((win_GetMouhandler(win) == FNULL) ? "" : sfile_FindMouseName(sfile, win_GetMouhandler(win)))
- : win_GetMouseName(win, sfile);
-
- s[3] = (win_GetExplodeHandle(win) == -1) ?
- ((win_GetExplodeFptr(win) == FNULL) ? "" : sfile_FindExplodeName(sfile, win_GetExplodeFptr(win)))
- : win_GetExplodeName(win, sfile);
-
- sprintf(sfile->buf, "%s\n%s\n%s\n%s\n%s\n",
- fsym_NullCheck(s[0]), fsym_NullCheck(s[1]), fsym_NullCheck(title),
- fsym_NullCheck(s[2]), fsym_NullCheck(s[3]));
-
- return(bfile_Write(sfile->bfile, sfile->buf, strlen(sfile->buf)));
- }
-
- boolean sfile_SaveComment(sfile, comment)
- sfile_type sfile;
- char *comment;
- {
- sprintf(sfile->buf, "%s\n", comment);
-
- return(bfile_Write(sfile->bfile, sfile->buf, strlen(sfile->buf)));
- }
-
- char *strnewlclip(s)
- char *s;
- {
- char *p;
-
- for (p = s; ; p++) {
- if (*p != '\n' && *p != '\r' && *p != '\t') {
- *s++ = *p;
- }
- if (*p == '\0') {
- break;
- }
- }
-
- return(s);
- }
-
-