home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 2
/
FFMCD02.bin
/
new
/
gfx
/
edit
/
tsmorph
/
handlesettings.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-12-21
|
25KB
|
845 lines
// TSMorph - Amiga Morphing program
// Copyright (C) © 1993 Topicsave Limited
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// mpaddock@cix.compulink.co.uk
// $Author: M_J_Paddock $
// $Date: 1993/09/04 17:45:18 $
// $Revision: 1.10 $
// include precompiled headers (if not already)
#ifndef TSMORPH_H
#include "TSMorph.h"
#endif
/* Remove menus from all windows allowing
* them to be updated
*/
void
RemoveMenus(void) {
if (TSMorphWnd) {
ClearMenuStrip(TSMorphWnd);
}
if (ControlWindow) {
ClearMenuStrip(Pic1.Win);
ClearMenuStrip(Pic2.Win);
ClearMenuStrip(ControlWindow);
}
}
/* Add the menus back again after
* calling RemoveMenus() and updating
*/
void
AddMenus(void) {
if (TSMorphWnd) {
ResetMenuStrip(TSMorphWnd,TSMorphMenus);
}
if (ControlWindow) {
ResetMenuStrip(ControlWindow,MyMenu);
ResetMenuStrip(Pic1.Win,MyMenu);
ResetMenuStrip(Pic2.Win,MyMenu);
}
}
/* Update the save format menu items
* Parameter: remove - set to TRUE to remove and add the menus
* to FALSE if menus have already been removed (for lots of updates)
*/
void
UpdateSaveFormat(BOOL remove) {
if (remove) {
RemoveMenus();
}
if (TSMorphWnd) {
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_ILBM24)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_OPAL24)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_OPAL24T)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_OPAL24F)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_OPAL24FT)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_JPEG)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_JPEGT)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_PBM)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_BW16)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_BW256)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_HAM6)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_HAM8)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_DCTV3)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,MI_DCTV4)))->Flags &= ~CHECKED;
}
if (ControlWindow) {
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_ILBM24)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_OPAL24)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_OPAL24T)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_OPAL24F)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_OPAL24FT)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_JPEG)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_JPEGT)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_PBM)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_BW16)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_BW256)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_HAM6)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_HAM8)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_DCTV3)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,MI_DCTV4)))->Flags &= ~CHECKED;
}
if (TSMorphWnd) {
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_SAVEFORMAT,SaveFormat)))->Flags |= CHECKED;
}
if (ControlWindow) {
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_SAVEFORMAT,SaveFormat)))->Flags |= CHECKED;
}
if (remove) {
AddMenus();
}
}
/* Update the render mode menu items
* see UpdateSaveFormat() for parameter
*/
void
UpdateRenderMode(BOOL remove) {
if (remove) {
RemoveMenus();
}
if (TSMorphWnd) {
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_RENDERMODE,MI_MODE0)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_RENDERMODE,MI_MODE1)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_RENDERMODE,MI_MODE2)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_RENDERMODE,MI_MODE3)))->Flags &= ~CHECKED;
}
if (ControlWindow) {
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_RENDERMODE,MI_MODE0)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_RENDERMODE,MI_MODE1)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_RENDERMODE,MI_MODE2)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_RENDERMODE,MI_MODE3)))->Flags &= ~CHECKED;
}
if (TSMorphWnd) {
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_RENDERMODE,RenderMode)))->Flags |= CHECKED;
}
if (ControlWindow) {
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_RENDERMODE,RenderMode)))->Flags |= CHECKED;
}
if (remove) {
AddMenus();
}
}
/* Update the open mode menu items
* see UpdateSaveFormat() for parameter
*/
void
UpdateOpenMode(BOOL remove) {
if (remove) {
RemoveMenus();
}
if (TSMorphWnd) {
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_OPENMODE,MI_ALWAYS)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_OPENMODE,MI_IFILBM)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_OPENMODE,MI_IFCOLOURS)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_OPENMODE,MI_REMAP)))->Flags &= ~CHECKED;
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_OPENMODE,MI_OPAL)))->Flags &= ~CHECKED;
}
if (ControlWindow) {
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_OPENMODE,MI_ALWAYS)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_OPENMODE,MI_IFILBM)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_OPENMODE,MI_IFCOLOURS)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_OPENMODE,MI_REMAP)))->Flags &= ~CHECKED;
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_OPENMODE,MI_OPAL)))->Flags &= ~CHECKED;
}
if (TSMorphWnd) {
(ItemAddress(TSMorphMenus,FULLMENUNUM(1,MM_OPENMODE,OpenMode)))->Flags |= CHECKED;
}
if (ControlWindow) {
(ItemAddress(MyMenu,FULLMENUNUM(M_SETTINGS,MM_OPENMODE,OpenMode)))->Flags |= CHECKED;
}
if (remove) {
AddMenus();
}
}
/* UnZoom the image windows
* i.e. currently displayed 2x and
* want to display 1x
*/
void
UnZoom(void) {
// Already zoomed - set number of windows resized (change window box may not work)
// see the main loop on how the messages are then handled
changedboxcount = 0;
// Copy image 1 to superbitmap and resync
BltBitMap(Pic1.ilbm->brbitmap,0,0,&(Pic1.BitMap),0,0,Pic1.ilbm->Bmhd.w,Pic1.ilbm->Bmhd.h,0xC0,0xff,NULL);
LockLayerRom(Pic1.Win->RPort->Layer);
CopySBitMap(Pic1.Win->RPort->Layer);
UnlockLayerRom(Pic1.Win->RPort->Layer);
/* Resize gadgets and window (if too big)
* Window limits are reset and points
* redrawn with IDCMP_CHANGEWINDOW
*/
SetGadgetAttrs(Pic1.BotGad, Pic1.Win, NULL,
PGA_Total, Pic1.ilbm->Bmhd.w,
TAG_END);
SetGadgetAttrs(Pic1.SideGad, Pic1.Win, NULL,
PGA_Total, Pic1.ilbm->Bmhd.h,
TAG_END);
ChangeWindowBox(Pic1.Win,Pic1.Win->LeftEdge,Pic1.Win->TopEdge,
min(Pic1.Win->Width,Pic1.ilbm->Bmhd.w+Pic1.Screen->WBorLeft+SIZEIMAGE_W(n)),
min(Pic1.Win->Height,Pic1.ilbm->Bmhd.h+Pic1