summaryrefslogtreecommitdiff
path: root/src/Image/Image_PixelInterpolation.cdl
blob: 2161fbf2056cf3b9aaf6f4a8ffaa0ad576d7005b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
--
-- File:	Image_PixelInterpolation.cdl
-- Created:	Tue Jul 27 18:47:06 1993
-- Author:	Jean Louis FRENKEL
--		<jlf@sparc3>
---Copyright:	 Matra Datavision 1993


class PixelInterpolation from Image

	---Purpose: The class PixelInterpolation is used to compute a Pixel 
	--            value on non-integer Image coordinate. This Pixel type
	--	      is called SubPixel .
	--          PixelInterpolation is the default and is the simplest one,
	--	      SubPixel value on non-integer Image coordinate is the 
	--	      value of the nearest Pixel at integer coordinate.
	--	    The user can create a new kind of PixelInterpolation with a
	--	      new algorithm by creating a new derived PixelInterpolation
	--	      class and redefined Interpolate() method.
	--	    If V1  is the value of the nearest Image Pixel
	--		V = V1 is the Image SubPixel value on non-integer 
	--	      coordinate (FX,FY)

uses

    Pixel       	from Aspect,
    Image	    	from Image,
    ColorPixel       	from Aspect,
    IndexPixel       	from Aspect,
    DColorImage 	from Image,
    DIndexedImage 	from Image

is

    	Create returns PixelInterpolation from Image ;
	---Level: Public
    	---Purpose: Create a PixelInterpolation  object.

	Interpolate( me ; aImage   : Image from Image ;
		          X,Y      : Real  from Standard ;
			  LowerX,LowerY,UpperX,UpperY : Integer from Standard ;
		          RetPixel : in out Pixel from Aspect ) 
		returns Boolean from Standard
		is virtual ;
	---Level: Public
    	---Purpose: Compute SubPixel's value on non-integer Image coordinate.
	--	    LowerX,LowerY,UpperX,UpperY is the Image Min Max, it's used
	--	    to check if the SubPixel coordinate X,Y is outside of image.
	--          Return True  if Interpolation Succes.
	--	    Retrun False if the SubPixel is out from Image.

	Interpolate( me ; aImage   : DColorImage from Image ;
		          FX,FY      : Real  from Standard ;
			  LowerX,LowerY,UpperX,UpperY : Integer from Standard ;
		          RetPixel : in out ColorPixel from Aspect ) 
		returns Boolean from Standard
		is virtual ;
	---Level: Public
    	---Purpose: Compute SubPixel's value on non-integer Image coordinate for
	--	      DColorImage and ColorPixel.
	--	    LowerX,LowerY,UpperX,UpperY is the Image Min Max, it's used
	--	      to check if the SubPixel coordinate FX,FY is outside of 
	--	      image.
	--          Return True  if Interpolation Succes.
	--	    Return False if the SubPixel is out from Image.


	Interpolate( me ; aImage   : DIndexedImage from Image ;
		          FX,FY      : Real  from Standard ;
			  LowerX,LowerY,UpperX,UpperY : Integer from Standard ;
		          RetPixel : in out IndexPixel from Aspect ) 
		returns Boolean from Standard
		is virtual ;
	---Level: Public
    	---Purpose: Compute SubPixel's value on non-integer Image coordinate for
	--	      DIndexedImage and IndexPixel.
	--	    LowerX,LowerY,UpperX,UpperY is the Image Min Max, it's use
	--	    check if the SubPixel coordinate X,Y is outside of image.
	--          Return True  if Interpolation Succes.
	--	    Return False if the SubPixel is out from Image.

	DoInterpolate( me ; aImage   : Image from Image ;
		            X,Y      : Real  from Standard ;
			    LowerX,LowerY,UpperX,UpperY: Integer from Standard ;
		            RetPixel : in out Pixel from Aspect ) 
		returns Boolean from Standard is static private ;

end PixelInterpolation from Image;