|
|
1.1 ! root 1: // ! 2: // FadingImageView.m ! 3: // ! 4: // Implements a fading image screen saver view ! 5: // ! 6: // Lennart Lovstrand, August 1991. ! 7: // small modifications by sam 910904 ! 8: // ! 9: // You may freely copy, distribute, and reuse the code in this example. ! 10: // NeXT disclaims any warranty of any kind, expressed or implied, as to its ! 11: // fitness for any particular use. ! 12: ! 13: ! 14: #import "FadingImageView.h" ! 15: #import "Thinker.h" ! 16: #import <appkit/NXImage.h> ! 17: #import <dpsclient/wraps.h> ! 18: #import <libc.h> ! 19: #import <math.h> ! 20: //#import <appkit/Application.h> ! 21: ! 22: #define STEPTIME 50 /* time between fades (millisec) */ ! 23: #define WAITTIME 6000 /* wait before fading (millisec) */ ! 24: ! 25: #define FADEDELTA 0.05 ! 26: ! 27: @implementation FadingImageView ! 28: ! 29: - drawSelf:(const NXRect *)rects :(int)rectCount ! 30: { ! 31: NXPoint p; ! 32: if (!rects || !rectCount) return self; ! 33: ! 34: [super drawSelf:rects :rectCount]; ! 35: ! 36: p.x = floor(imageRect.origin.x); ! 37: p.y = floor(imageRect.origin.y); ! 38: ! 39: [image dissolve: delta toPoint: &p]; ! 40: ! 41: return self; ! 42: } ! 43: ! 44: - oneStep ! 45: { ! 46: if (![self timePassed: steptime]) return self; ! 47: ! 48: switch (state) ! 49: { ! 50: case FV_FadeIn: ! 51: delta += FADEDELTA; ! 52: if (delta >= 1.0) ! 53: { ! 54: delta = 1.0; ! 55: state = FV_FadeOut; ! 56: steptime = WAITTIME; ! 57: } ! 58: ! 59: PSsetgray(0.0); ! 60: NXRectFill(&imageRect); ! 61: [image dissolve: delta toPoint: &imageRect.origin]; ! 62: break; ! 63: ! 64: case FV_FadeOut: ! 65: delta -= FADEDELTA; ! 66: if (delta <= 0.0) ! 67: { ! 68: delta = 0.0; ! 69: state = FV_Move; ! 70: } ! 71: ! 72: PSsetgray(0.0); ! 73: NXRectFill(&imageRect); ! 74: [image dissolve: delta toPoint: &imageRect.origin]; ! 75: steptime = STEPTIME; ! 76: break; ! 77: ! 78: case FV_Move: ! 79: imageRect.origin.x = floor(randBetween(0, maxCoord.x)); ! 80: imageRect.origin.y = floor(randBetween(0, maxCoord.y)); ! 81: state = FV_FadeIn; ! 82: steptime = STEPTIME; ! 83: break; ! 84: } ! 85: ! 86: return self; ! 87: } ! 88: ! 89: - initFrame:(NXRect *)frameRect ! 90: { ! 91: steptime = STEPTIME; ! 92: state = FV_Move; ! 93: return [super initFrame:frameRect]; ! 94: } ! 95: ! 96: - inspector:sender ! 97: { ! 98: return [sender commonImageInspector]; ! 99: } ! 100: ! 101: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.