This is frameim.c in view mode; [Download] [Up]
/* * FrameImage - wraps image with an ornamental frame * * RCS: * $Revision: 2.3 $ * $Date: 1996/05/03 02:21:34 $ * * Security: * Unclassified * * Description: * From ImageMagick 3.6.5 * * Input Parameters: * type identifier description * * text * * Output Parameters: * type identifier description * * text * * Return Values: * value description * * Side Effects: * text * * Limitations and Comments: * text * * Development History: * who when why * muquit@semcor.com 18-Aug-95 first cut */ #include "combine.h" #include "defines.h" Image *FrameImage (mimage, frame_info) Image *mimage; FrameInfo *frame_info; { Image *framed_image; int height, width; register int x, y; register Runlength *p, *q; Runlength highlight, matte, shadow; unsigned int bevel_width; if ((frame_info->outer_bevel < 0) || (frame_info->inner_bevel < 0)) { (void) fprintf (stderr,"Unable to Frame image!\n"); return ((Image *) NULL); } bevel_width=frame_info->outer_bevel+frame_info->inner_bevel; width=(int) frame_info->width-frame_info->x-bevel_width; height=(int) frame_info->height-frame_info->y-bevel_width; if ((width < mimage->columns) || (height < mimage->rows)) { (void) fprintf (stderr,"Unable to Frame image!\n"); return ((Image *) NULL); } framed_image=DuplicateImage(mimage,frame_info->width,frame_info->height, False); if (framed_image == (Image *) NULL) { (void) fprintf (stderr,"Unable to Frame image!\n"); return ((Image *) NULL); } mimage->class=DirectClass; matte.red=frame_info->matte_color.red; matte.green=frame_info->matte_color.green; matte.blue=frame_info->matte_color.blue; matte.index=MaxRGB; matte.length=0; highlight.red=frame_info->highlight_color.red; highlight.green=frame_info->highlight_color.green; highlight.blue=frame_info->highlight_color.blue; highlight.index=MaxRGB; highlight.length=0; shadow.red=frame_info->shadow_color.red; shadow.green=frame_info->shadow_color.green; shadow.blue=frame_info->shadow_color.blue; shadow.index=MaxRGB; shadow.length=0; q=framed_image->pixels; for (y=0; y < frame_info->outer_bevel; y++) { for (x=0; x < (framed_image->columns-y); x++) { *q++=highlight; } for ( ; x < framed_image->columns; x++) *q++=shadow; } for (y=0; y < (frame_info->y-bevel_width); y++) { for (x=0; x < frame_info->outer_bevel; x++) *q++=highlight; for (x=0; x < (framed_image->columns- (frame_info->outer_bevel << 1)); x++) *q++=matte; for (x=0; x < frame_info->outer_bevel; x++) *q++=shadow; } for (y=0; y < frame_info->inner_bevel; y++) { for (x=0; x < frame_info->outer_bevel; x++) *q++=highlight; for (x=0; x < (frame_info->x-bevel_width); x++) *q++=matte; for (x=0; x < (mimage->columns+(frame_info->inner_bevel << 1)-y); x++) *q++=shadow; for ( ; x < (mimage->columns+(frame_info->inner_bevel << 1)); x++) *q++=highlight; width=frame_info->width-frame_info->x-mimage->columns-bevel_width; for (x=0; x < width; x++) *q++=matte; for (x=0; x < frame_info->outer_bevel; x++) *q++=shadow; } p=mimage->pixels; mimage->runlength=p->length+1; for (y=0; y < mimage->rows; y++) { for (x=0; x < frame_info->outer_bevel; x++) *q++=highlight; for (x=0; x < (frame_info->x-bevel_width); x++) *q++=matte; for (x=0; x < frame_info->inner_bevel; x++) *q++=shadow; /* ** Transfer scanline */ for (x=0; x < mimage->columns; x++) { if (mimage->runlength != 0) mimage->runlength--; else { p++; mimage->runlength=p->length; } *q=(*p); q->length=0; q++; } for (x=0; x < frame_info->inner_bevel; x++) *q++=highlight; width=frame_info->width-frame_info->x-mimage->columns-bevel_width; for (x=0; x < width; x++) *q++=matte; for (x=0; x < frame_info->outer_bevel; x++) *q++=shadow; } for (y=frame_info->inner_bevel-1; y >= 0; y--) { for (x=0; x < frame_info->outer_bevel; x++) *q++=highlight; for (x=0; x < (frame_info->x-bevel_width); x++) *q++=matte; for (x=0; x < y; x++) *q++=shadow; for ( ; x < (mimage->columns+(frame_info->inner_bevel << 1)); x++) *q++=highlight; width=frame_info->width-frame_info->x-mimage->columns-bevel_width; for (x=0; x < width; x++) *q++=matte; for (x=0; x < frame_info->outer_bevel; x++) *q++=shadow; } height=frame_info->height-frame_info->y-mimage->rows-bevel_width; for (y=0; y < height; y++) { for (x=0; x < frame_info->outer_bevel; x++) *q++=highlight; for (x=0; x < (framed_image->columns- (frame_info->outer_bevel << 1)); x++) *q++=matte; for (x=0; x < frame_info->outer_bevel; x++) *q++=shadow; } for (y=frame_info->outer_bevel-1; y >= 0; y--) { for (x=0; x < y; x++) *q++=highlight; for ( ; x < framed_image->columns; x++) *q++=shadow; } return (framed_image); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.