|
|
/************************************************************/ /* Windows Write, Copyright 1985-1992 Microsoft Corporation */ /************************************************************/
/* chlook.c -- modify format from the keyboard or directly from dropdown */ #define NOCLIPBOARD
#define NOCTLMGR
#define NOGDICAPMASKS
#define NOWINSTYLES
#define NOWINMESSAGES
#define NOVIRTUALKEYCODES
#include <windows.h>
#include "mw.h"
#include "cmddefs.h"
#include "editdefs.h"
#include "str.h"
#include "prmdefs.h"
#include "propdefs.h"
#include "filedefs.h"
#include "dispdefs.h"
#include "menudefs.h"
/* E X T E R N A L S */ extern HMENU vhMenu; extern int vfVisiMode; extern int vfInsLast; extern int vfSeeSel; extern int fGrayChar; extern struct UAB vuab; #ifdef ENABLE /* myMenus and mpifntfont not used */
extern MENUHANDLE myMenus[]; extern int mpifntfont[]; #endif
extern int vifntMac; extern int vifntApplication;
#define keyDownMask 8
CHAR rgbAgain[1 + cchINT]; /* holds last sprm with value for Again key */
/* D O C H L O O K */ /* decode ch and apply looks to pchp (or to current sel if pchp == 0) */ DoChLook(ch, pchp) int ch; struct CHP *pchp; { #ifdef ENABLE /* DoChLook not implemented yet */
typeCP cpFirst, cpLim; int val; int sprm; int enbSave;
vfSeeSel = vfInsLast = fTrue; if (ch == chAgain) { AddOneSprm(rgbAgain, fTrue); vuab.uac = uacChLook; SetUndoMenuStr(IDSTRUndoLook); return; }
val = fTrue; switch(ChUpper(ch & 0377)) { default: /*---- Error(IDPMTBadLook);----*/ beep(); return; case chLookStd & 0377: sprm = sprmCPlain; val = stcNormal; goto LApplyCLook; case chLookItalic & 0377: sprm = sprmCItalic; goto LApplyCLook; case chLookBold & 0377: sprm = sprmCBold; goto LApplyCLook; case chLookUline & 0377: sprm = sprmCUline; goto LApplyCLook; case chLookShadow & 0377: sprm = sprmCShadow; goto LApplyCLook; case chLookOutline & 0377: sprm = sprmCOutline; goto LApplyCLook; case chLookSuper & 0377: sprm = sprmCPos; val = ypSubSuper; goto LApplyCLook; case chLookSub & 0377: sprm = sprmCPos; val = -ypSubSuper; goto LApplyCLook; case chLookSmCaps & 0377: sprm = sprmCCsm; val = csmSmallCaps; goto LApplyCLook; case chLookHpsBig & 0377: sprm = sprmCChgHps; val = 1; goto LApplyCLook; case chLookHpsSmall & 0377: sprm = sprmCChgHps; val = -1; goto LApplyCLook; case chLookFont & 0377: /* Disable eject disk/ print image key handlers */ #define SCRDMPENB (0x2f8L)
enbSave = LDBI(SCRDMPENB); STBI(0, SCRDMPENB); ch = ChInpWait(); STBI(enbSave, SCRDMPENB); if (ch < '0' || ch > '9') { /*---- Error(IDPMTBadLook);----*/ beep(); return; } sprm = sprmCChgFtc; val = ch - '0'; /* Map from font index to system font code */ val = val >= vifntMac ? vifntApplication & 0377: mpifntfont[val]; goto LApplyCLook;
/* Paragraph looks */ case chLookGeneral & 0377: sprm = sprmPNormal; /*val = 0;*/ break; case chLookLeft & 0377: sprm = sprmPJc; val = jcLeft; break; case chLookRight & 0377: sprm = sprmPJc; val = jcRight; break; case chLookJust & 0377: sprm = sprmPJc; val = jcBoth; break; case chLookCenter & 0377: sprm = sprmPJc; val = jcCenter; break; case chLookIndent & 0377: val = czaInch/2; sprm = sprmPFIndent; goto LApplyPLook; case chLookDouble & 0377: val = czaLine * 2; sprm = sprmPDyaLine; goto LApplyPLook; case chLookOpen & 0377: val = czaLine; sprm = sprmPDyaBefore; goto LApplyPLook; case chLookNest & 0377: sprm = sprmPNest; /*val = 0;*/ break; case chLookUnNest & 0377: sprm = sprmPUnNest; /*val = 0;*/ break; case chLookHang & 0377: sprm = sprmPHang; /*val = 0;*/ break; } /* apply look with 1 char value */ ApplyLooksParaS(pchp, sprm, val); return; /* apply look with cchInt char value */ LApplyPLook: ApplyLooksPara(pchp, sprm, val); return;
LApplyCLook: ApplyCLooks(pchp, sprm, val); return; #endif /* ENABLE */
}
/* A P P L Y C L O O K S */ /* character looks. val is a 1 char value */ ApplyCLooks(pchp, sprm, val) struct CHP *pchp; int sprm, val; { /* Assemble sprm */ CHAR *pch = rgbAgain; *pch++ = sprm; *pch = val;
if (pchp == 0) { /* apply looks to current selection */ AddOneSprm(rgbAgain, fTrue); vuab.uac = uacChLook; SetUndoMenuStr(IDSTRUndoLook); } else /* apply looks to pchp */ DoSprm(pchp, 0, sprm, pch); }
/* A P P L Y L O O K S P A R A S */ /* val is a char value */ ApplyLooksParaS(pchp, sprm, val) struct CHP *pchp; int sprm, val; { int valT = 0; CHAR *pch = (CHAR *)&valT; *pch = val; /* all the above is just to prepare bltbyte later gets the right byte order */ ApplyLooksPara(pchp, sprm, valT); }
/* A P P L Y L O O K S P A R A */ /* val is an integer value. Char val's must have been bltbyte'd into val */ ApplyLooksPara(pchp, sprm, val) struct CHP *pchp; int sprm, val; {
#ifdef ENABLE /* related to footnote */
if (FWriteCk(fwcNil)) /* Just check for illegal action in footnote */ #endif
{ /* set Again stuff since we may have been called from the menu */ CHAR *pch = rgbAgain; *pch++ = sprm; bltbyte(&val, pch, cchINT); AddOneSprm(rgbAgain, fTrue); vuab.uac = uacChLook; SetUndoMenuStr(IDSTRUndoLook); } return; }
#ifdef ENABLE /* fnChar/fnPara */
/* F N C H A R P L A I N */ void fnCharPlain() { ApplyCLooks(0, sprmCPlain, 0); }
/* F N C H A R B O L D */ void fnCharBold() { ApplyCLooks(0, sprmCBold, FMenuUnchecked(imiBold)); }
void fnCharItalic() { ApplyCLooks(0, sprmCItalic, FMenuUnchecked(imiItalic)); }
void fnCharUnderline() { ApplyCLooks(0, sprmCUline, FMenuUnchecked(imiUnderline)); }
void fnCharSuperscript() { ApplyCLooks(0, sprmCPos, FMenuUnchecked(imiSuper) ? ypSubSuper : 0); }
void fnCharSubscript() { ApplyCLooks(0, sprmCPos, FMenuUnchecked(imiSub) ? -ypSubSuper : 0); }
void fnParaNormal() { extern int vfPictSel;
ApplyLooksParaS(0, sprmPNormal, 0); if (vfPictSel) CmdUnscalePic(); }
void fnParaLeft() { ApplyLooksParaS(0, sprmPJc, jcLeft); }
void fnParaCentered() { ApplyLooksParaS(0, sprmPJc, jcCenter); }
void fnParaRight() { ApplyLooksParaS(0, sprmPJc, jcRight); }
void fnParaJustified() { ApplyLooksParaS(0, sprmPJc, jcBoth); }
void fnParaOneandhalfspace() { ApplyLooksPara(0, sprmPDyaLine, czaLine * 3 / 2); }
void fnParaDoublespace() { ApplyLooksPara(0, sprmPDyaLine, czaLine * 2); }
void fnParaSinglespace() { ApplyLooksPara(0, sprmPDyaLine, czaLine); }
int FMenuUnchecked(imi) int imi; { /* Return true if there is NO check mark in front of menu */ int flag;
if (fGrayChar) return true; flag = CheckMenuItem(vhMenu, imi, MF_CHECKED); CheckMenuItem(vhMenu, imi, flag); /* back to original status */ return(flag == MF_UNCHECKED ? true : false);
#ifdef SAND
GetItemMark(myMenus[CHARACTER - 1], imi, &ch); /***** WRONG COMMENT BELOW! *****/ return (ch != 18); /* Return true is there is a check mark in front of menu */ #endif /* SAND */
} #endif
int ChInpWait() { #ifdef ENABLE /* CpInpWait not implemented yet */
EVENT event; int i; for (i = 0; i < 15000; i++) { if(GetNextEvent(keyDownMask, &event)) return (event.message.wl & 0x007f); } return -1; /* Will cause a beep if the user times out */ #endif /* ENABLE */
}
#ifdef CASHMERE /* smcap, overstrike, dbline, open para, visible mode */
fnCharSmallcaps() { ApplyCLooks(0, sprmCCsm, FMenuUnchecked(7) ? csmSmallCaps : csmNormal); } fnCharOutline() { ApplyCLooks(0, sprmCOutline, FMenuUnchecked(5)); }
fnCharShadow() { ApplyCLooks(0, sprmCShadow, FMenuUnchecked(6)); } fnParaOpenspace() { ApplyLooksPara(0, sprmPDyaBefore, czaLine); } fnVisiMode() { vfVisiMode = !vfVisiMode; TrashAllWws(); } #endif /* CASHMERE */
|