FLIReader.st
author Claus Gittinger <cg@exept.de>
Tue, 03 Sep 2013 17:23:55 +0200
changeset 3228 187a4158a51a
parent 1846 d29322944b05
child 3855 1db7742d33ad
permissions -rw-r--r--
class: FlyByHelp changed: #initiateHelpFor:at:now: #showHelp:for: changed the flyBy suppression slightly: if the same text is to be shown again, do not show it except if the help is for another widget. (used to check for the text only previously)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
514
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
     1
"
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
     2
 COPYRIGHT (c) 1997 by eXept Software AG
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
     3
              All Rights Reserved
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
     4
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
     5
 This software is furnished under a license and may be used
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
     6
 only in accordance with the terms of that license and with the
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
     8
 be provided or otherwise made available to, or used by, any
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
     9
 other person.  No title to or ownership of the software is
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    10
 hereby transferred.
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    11
"
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    12
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    13
1745
4fa0fad2a463 code cleanup (colorMap handling)
Claus Gittinger <cg@exept.de>
parents: 647
diff changeset
    14
"{ Package: 'stx:libview2' }"
4fa0fad2a463 code cleanup (colorMap handling)
Claus Gittinger <cg@exept.de>
parents: 647
diff changeset
    15
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
ImageReader subclass:#FLIReader
620
6a4214e29c86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 615
diff changeset
    17
	instanceVariableNames:'nframes frameBuffer frameBufferSize imageBuffer redPalette
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
		greenPalette bluePalette flags frameDelay'
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	classVariableNames:'FLI_FILE_MAGIC FLC_FILE_MAGIC FLI_FRAME_MAGIC FILE_HEAD_SIZE
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
		FRAME_HEAD_SIZE CHUNK_HEAD_SIZE FLI_256_COLOR FLI_DELTA FLI_COLOR
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
		FLI_LC FLI_BLACK FLI_BRUN FLI_COPY FLI_MINI MAXCOLORS'
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	poolDictionaries:''
1745
4fa0fad2a463 code cleanup (colorMap handling)
Claus Gittinger <cg@exept.de>
parents: 647
diff changeset
    23
	category:'Graphics-Images-Readers'
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
!FLIReader class methodsFor:'documentation'!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
514
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    28
copyright
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    29
"
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    30
 COPYRIGHT (c) 1997 by eXept Software AG
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    31
              All Rights Reserved
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    32
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    33
 This software is furnished under a license and may be used
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    34
 only in accordance with the terms of that license and with the
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    35
 inclusion of the above copyright notice.   This software may not
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    36
 be provided or otherwise made available to, or used by, any
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    37
 other person.  No title to or ownership of the software is
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    38
 hereby transferred.
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    39
"
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    40
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    41
!
6b18ed409057 copyright
Claus Gittinger <cg@exept.de>
parents: 512
diff changeset
    42
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
documentation
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
"
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    Read frames from a FLI/FLC file.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    this is a very first attempt in reading FLI files;
615
1f5b783f9c08 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 557
diff changeset
    48
    (a first experiment in reading that fileFormat)
1f5b783f9c08 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 557
diff changeset
    49
1f5b783f9c08 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 557
diff changeset
    50
    Its very experimental, preliminary and will certainly change.
1f5b783f9c08 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 557
diff changeset
    51
    (will introduce a new class hierarchy based upon some MovieReader ...).
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    When used like an imageReader, #fromFile: will return
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
    the very first frame.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
511
a71875ab0bf6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 510
diff changeset
    56
    Warning: right now, the complete movie is read and huge
a71875ab0bf6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 510
diff changeset
    57
    amounts of memoru are allocated. The interface will be changed
a71875ab0bf6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 510
diff changeset
    58
    to allow stream operation ...
a71875ab0bf6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 510
diff changeset
    59
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    [author:]
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
        Claus Gittinger
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    [see also:]
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
        ImageReader
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
"
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
examples
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
"
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    |reader film view tNext|
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    reader := FLIReader readFile:'/usr/local/FLI/jeffmild.fli'.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    reader isNil ifTrue:[^ nil].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    film := reader images.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    view := StandardSystemView extent:(film first extent).
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    view openAndWait.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    tNext := Time millisecondClockValue + (reader frameDelay).
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    film do:[:frame |
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
        frame displayOn:view x:0 y:0.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
        (Delay untilMilliseconds:tNext) wait.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
        tNext := tNext + (reader frameDelay).
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    ].
552
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    84
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    85
    |reader film view tNext|
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    86
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    87
    FLIReader fromFile:('/cdrom/video/fli/dh_hai.fli').
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    88
    reader := FLIReader readFile:'/cdrom/video/fli/dh_hai.fli'.
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    89
    reader isNil ifTrue:[^ nil].
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    90
    film := reader images.
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    91
    view := StandardSystemView extent:(film first extent).
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    92
    view openAndWait.
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    93
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    94
    tNext := Time millisecondClockValue + (reader frameDelay).
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    95
    film do:[:frame |
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    96
        frame displayOn:view x:0 y:0.
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    97
        (Delay untilMilliseconds:tNext) wait.
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    98
        tNext := tNext + (reader frameDelay).
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
    99
    ].
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   100
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   101
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   102
    |reader film view tNext|
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   103
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   104
    reader := FLIReader readFile:'/cdrom/video/fli/wedding.fli'.
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   105
    reader isNil ifTrue:[^ nil].
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   106
    film := reader images.
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   107
    view := StandardSystemView extent:(film first extent).
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   108
    view openAndWait.
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   109
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   110
    tNext := Time millisecondClockValue + (reader frameDelay).
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   111
    film do:[:frame |
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   112
        frame displayOn:view x:0 y:0.
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   113
        (Delay untilMilliseconds:tNext) wait.
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   114
        tNext := tNext + (reader frameDelay).
18b8aa74622d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 514
diff changeset
   115
    ].
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
"
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
! !
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
!FLIReader class methodsFor:'class initialization'!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
initialize
557
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   122
    "install myself in the Image classes fileFormat table
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   123
     for the `.fli' and '.flc' extensions."
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   124
647
6f26c76aa0c9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 621
diff changeset
   125
    MIMETypes defineImageType:'video/x-fli' suffix:'fli' reader:self.
6f26c76aa0c9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 621
diff changeset
   126
    MIMETypes defineImageType:nil           suffix:'flc' reader:self.
557
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   127
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    FLI_FILE_MAGIC := 16rAF11.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    FLC_FILE_MAGIC := 16rAF12.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
    FLI_FRAME_MAGIC := 16rF1FA.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    FILE_HEAD_SIZE := 128.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
    FRAME_HEAD_SIZE := 16.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    CHUNK_HEAD_SIZE := 6.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
    FLI_256_COLOR := 4.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    FLI_DELTA := 7.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    FLI_COLOR := 11.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    FLI_LC  := 12.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    FLI_BLACK := 13.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    FLI_BRUN := 15.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    FLI_COPY := 16.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    FLI_MINI := 18.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
    MAXCOLORS := 256.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    "
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
     FLIReader initialize
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    "
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
557
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   152
    "Modified: 21.4.1997 / 21:16:48 / cg"
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
! !
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
!FLIReader class methodsFor:'testing'!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
isValidImageFile:aFileName
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
    "return true, if aFileName contains an FLI/FLC-movie"
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    |header n inStream len type|
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
    inStream := self streamReadingFile:aFileName.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    inStream isNil ifTrue:[^ false].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    header := ByteArray new:FILE_HEAD_SIZE.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    n := inStream nextBytes:FILE_HEAD_SIZE into:header.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
    inStream close.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
    n ~~ FILE_HEAD_SIZE ifTrue:[^ false].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    len := header doubleWordAt:(1+0).
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    type := header wordAt:(1+4).
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    type ~~ FLI_FILE_MAGIC ifTrue:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
        type ~~ FLC_FILE_MAGIC ifTrue:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
            ^ false
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
        ]
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    ^ true
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    "
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
     FLIReader isValidImageFile:'bitmaps/magtape.xpm'    
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
     FLIReader isValidImageFile:'/usr/local/FLI/jeffmild.fli'      
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    "
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    "Modified: 4.4.1997 / 22:30:19 / cg"
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
! !
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
!FLIReader methodsFor:'accessing'!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
frameDelay
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    "return the value of the instance variable 'frameDelay' (automatically generated)"
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    ^ frameDelay
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    "Created: 4.4.1997 / 21:59:02 / cg"
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
images
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    "return a collection of all images as represented by myself"
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
621
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   201
    |image depth|
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    depth := self bitsPerPixel.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
621
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   205
    1 to:imageSequence size do:[:i |
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   206
        |frame|
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   207
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   208
        frame := imageSequence at:i.
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   209
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   210
        frame isImage ifFalse:[
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   211
            image := (Image implementorForDepth:depth) new.
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   212
            image 
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   213
                width:width 
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   214
                height:height
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   215
                photometric:photometric
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   216
                samplesPerPixel:samplesPerPixel
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   217
                bitsPerSample:bitsPerSample
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   218
                colorMap:colorMap
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   219
                bits:frame
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   220
                mask:mask.
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   221
            imageSequence at:i put:image.
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   222
        ]
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
    ].
621
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   224
    ^ imageSequence
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
    "Created: 4.4.1997 / 21:44:44 / cg"
621
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   227
    "Modified: 24.6.1997 / 15:57:22 / cg"
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
! !
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
1805
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   230
!FLIReader methodsFor:'private-reading'!
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   231
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   232
getFrame
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   233
    "get a single frame"
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   234
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   235
    |header n len type dataLen nchunks|
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   236
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   237
    header := ByteArray new:FRAME_HEAD_SIZE.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   238
    n := inStream nextBytes:FRAME_HEAD_SIZE into:header.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   239
    n ~~ FRAME_HEAD_SIZE ifTrue:[^ false].
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   240
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   241
    len := header doubleWordAt:(1+0).
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   242
    type := header wordAt:(1+4).
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   243
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   244
    type ~~ FLI_FRAME_MAGIC ifTrue:[^ false].
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   245
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   246
    dataLen := len - FRAME_HEAD_SIZE.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   247
    dataLen > frameBufferSize ifTrue:[
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   248
        frameBuffer := ByteArray uninitializedNew:dataLen.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   249
        frameBufferSize := dataLen.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   250
    ].
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   251
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   252
    n := inStream nextBytes:dataLen into:frameBuffer.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   253
    n ~~ dataLen ifTrue:[^ false].
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   254
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   255
    nchunks := header wordAt:(1+6).
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   256
    nchunks == 0 ifTrue:[
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   257
        "/ mhmh - a timing frame; should add a dummy frame
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   258
        ^ self.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   259
    ].     
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   260
    ^ self processChunks:nchunks size:dataLen.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   261
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   262
    "
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   263
     FLIReader fromFile:'bitmaps/magtape.xpm'    
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   264
     FLIReader fromFile:'/usr/local/FLI/jeffmild.fli'      
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   265
    "
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   266
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   267
    "Created: 3.4.1997 / 22:15:19 / cg"
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   268
    "Modified: 4.4.1997 / 22:18:21 / cg"
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   269
!
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   270
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   271
getHeader
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   272
    "read the header; return true, if its valid"
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   273
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   274
    |header n len type speed|
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   275
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   276
    header := ByteArray new:FILE_HEAD_SIZE.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   277
    n := inStream nextBytes:FILE_HEAD_SIZE into:header.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   278
    n ~~ FILE_HEAD_SIZE ifTrue:[^ false].
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   279
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   280
    len := header doubleWordAt:(1+0).
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   281
    type := header wordAt:(1+4).
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   282
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   283
    type ~~ FLI_FILE_MAGIC ifTrue:[
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   284
        type ~~ FLC_FILE_MAGIC ifTrue:[
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   285
            ^ false
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   286
        ]
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   287
    ].
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   288
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   289
    nframes := header wordAt:(1+6).
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   290
    width := header wordAt:(1+8).
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   291
    height := header wordAt:(1+10).
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   292
1846
d29322944b05 dimensionReport
Claus Gittinger <cg@exept.de>
parents: 1805
diff changeset
   293
    self reportDimension.
d29322944b05 dimensionReport
Claus Gittinger <cg@exept.de>
parents: 1805
diff changeset
   294
1805
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   295
    flags := header wordAt:(1+14).
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   296
    speed := header wordAt:(1+16).
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   297
    speed <= 0 ifTrue:[
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   298
        speed := 1
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   299
    ].
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   300
    "/ FLI uses 1/70th of a second;
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   301
    "/ FLC measures the frameDelay in milliseconds
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   302
    type == FLI_FILE_MAGIC ifTrue:[
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   303
        frameDelay := 1000 * speed // 70
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   304
    ] ifFalse:[
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   305
        frameDelay := speed
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   306
    ].
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   307
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   308
    frameBufferSize := width * height.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   309
    frameBuffer := ByteArray uninitializedNew:frameBufferSize.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   310
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   311
    redPalette := ByteArray new:256.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   312
    greenPalette := ByteArray new:256.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   313
    bluePalette := ByteArray new:256.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   314
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   315
    imageSequence := OrderedCollection new:nframes.
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   316
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   317
    ^ true
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   318
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   319
    "
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   320
     FLIReader fromFile:'bitmaps/magtape.xpm'    
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   321
     FLIReader fromFile:'/usr/local/FLI/jeffmild.fli'      
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   322
    "
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   323
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   324
    "Created: 3.4.1997 / 22:09:12 / cg"
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   325
    "Modified: 24.6.1997 / 15:31:39 / cg"
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   326
! !
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   327
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
!FLIReader methodsFor:'processing chunks'!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
brunChunkAt:chunkOffs
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
    |offs lineIdx nextLineIdx packets sz|
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
512
e1f0a68c218d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 511
diff changeset
   333
"/    'brunChunkAt' infoPrintCR.
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
    imageBuffer := ByteArray uninitializedNew:(width*height).
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
    offs := chunkOffs.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
    lineIdx := 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
    1 to:height do:[:y |
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
        nextLineIdx := lineIdx + width.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
        packets := frameBuffer byteAt:offs. offs := offs + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
        1 to:packets do:[:p |
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
            sz := frameBuffer signedByteAt:offs. offs := offs + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
            sz > 0 ifTrue:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
                data := frameBuffer at:offs. offs := offs + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
                imageBuffer from:lineIdx to:(lineIdx+sz-1) put:data.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
            ] ifFalse:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
                sz == 0 ifTrue:[    
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
                    self halt:'error in brun chunk'.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
                    ^ self.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
                ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
                sz := sz negated.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
                imageBuffer replaceFrom:lineIdx to:(lineIdx+sz-1) 
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
                            with:frameBuffer startingAt:offs.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
                offs := offs + sz.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
            ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
            lineIdx := lineIdx + sz.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
        ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
        lineIdx := nextLineIdx
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
    ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
620
6a4214e29c86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 615
diff changeset
   364
    imageSequence add:imageBuffer.
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
    "
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
     FLIReader imagesFromFile:'/usr/local/FLI/jeffmild.fli'      
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
    "
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
620
6a4214e29c86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 615
diff changeset
   370
    "Modified: 24.6.1997 / 15:31:22 / cg"
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
color256ChunkAt:chunkOffs
512
e1f0a68c218d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 511
diff changeset
   374
"/    'color256Chunk' infoPrintCR.
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
    self colorChunkAt:chunkOffs shift:0
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
512
e1f0a68c218d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 511
diff changeset
   377
    "Modified: 4.4.1997 / 22:45:42 / cg"
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
color64ChunkAt:chunkOffs
512
e1f0a68c218d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 511
diff changeset
   381
"/    'color64Chunk' infoPrintCR.
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
    self colorChunkAt:chunkOffs shift:2
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
512
e1f0a68c218d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 511
diff changeset
   384
    "Modified: 4.4.1997 / 22:45:45 / cg"
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
colorChunkAt:chunkOffs shift:colorShift
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
    |b0 b1 packets offs ic skip change red green blue|
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
512
e1f0a68c218d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 511
diff changeset
   390
"/    '  colorChunk' infoPrintCR.
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
    offs := chunkOffs.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
    packets := frameBuffer wordAt:offs. offs := offs + 2.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
    ic := 0.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
    1 to:packets do:[:i |
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
        skip := frameBuffer byteAt:offs. offs := offs + 1.   
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
        ic := ic + skip.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
        ic := ic \\ MAXCOLORS.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
        change := frameBuffer byteAt:offs. offs := offs + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
        change == 0 ifTrue:[change := 256].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
        
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
        1 to:change do:[:n |
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
            red := frameBuffer at:offs. offs := offs + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
            green := frameBuffer at:offs. offs := offs + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
            blue := frameBuffer at:offs. offs := offs + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
            red := red bitShift:colorShift.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
            green := green bitShift:colorShift.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
            blue := blue bitShift:colorShift.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
"/ red print. ' ' print. green print. ' ' print. blue printCR.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
            redPalette at:(ic + 1) put:red.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
            greenPalette at:(ic + 1) put:green.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
            bluePalette at:(ic + 1) put:blue.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   415
            ic := ic + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
        ]
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   417
    ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
    "
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
     FLIReader fromFile:'/usr/local/FLI/jeffmild.fli'      
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
    "
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
512
e1f0a68c218d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 511
diff changeset
   423
    "Modified: 4.4.1997 / 22:45:49 / cg"
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
deltaChunkAt:chunkOffs
512
e1f0a68c218d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 511
diff changeset
   427
"/    'deltaChunkAt' infoPrintCR.
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
557
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   429
    Image badImageFormatQuerySignal raiseErrorString:'FLIReader [error]: delta chunks not yet implemented'
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   430
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   431
    "Modified: 21.4.1997 / 21:15:05 / cg"
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
lcChunkAt:chunkOffs
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
    |jnext lines lineCnt offs lineIdx packets idx skip sz|
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
512
e1f0a68c218d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 511
diff changeset
   437
"/    'lcChunkAt' infoPrintCR.
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
    imageBuffer := imageBuffer copyFrom:1 to:(width*height).
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   441
    offs := chunkOffs.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
    jnext := frameBuffer wordAt:offs. offs := offs + 2.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
    lines := frameBuffer wordAt:offs. offs := offs + 2.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   445
    lineCnt := 0.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
    lineIdx := 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
    0 to:height-1 do:[:row |
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   449
        lineCnt >= lines ifTrue:[
620
6a4214e29c86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 615
diff changeset
   450
            imageSequence add:imageBuffer.
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
            ^ self
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
        ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
        row < jnext ifFalse:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   455
            packets := frameBuffer byteAt:offs. offs := offs + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
            lineCnt := lineCnt + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
            idx := lineIdx.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
            1 to:packets do:[:p |
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   459
                skip := frameBuffer byteAt:offs. offs := offs + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   460
                idx := idx + skip.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
                sz := frameBuffer signedByteAt:offs. offs := offs + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
                sz > 0 ifTrue:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   463
                    imageBuffer replaceFrom:idx to:(idx+sz-1) 
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
                                with:frameBuffer startingAt:offs.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   465
                    offs := offs + sz.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   466
                ] ifFalse:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   467
                    sz < 0 ifTrue:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
                        sz := sz negated.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
                        data := frameBuffer at:offs. offs := offs + 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
                        imageBuffer from:idx to:(idx+sz-1) put:data.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
                    ]
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   472
                ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
                idx := idx + sz.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
            ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   475
        ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   476
        lineIdx := lineIdx + width
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   477
    ].
620
6a4214e29c86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 615
diff changeset
   478
    imageSequence add:imageBuffer.
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   479
620
6a4214e29c86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 615
diff changeset
   480
    "Modified: 24.6.1997 / 15:31:25 / cg"
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
processChunks:nchunks size:dataLen
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
    "process chunks in a frame"
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
    |len type offs chunkOffs|
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
    offs := 1+0.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
    1 to:nchunks do:[:chunkIndex |
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
        len := frameBuffer doubleWordAt:(offs+0).
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
        type := frameBuffer wordAt:(offs+4).
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
        chunkOffs := offs + CHUNK_HEAD_SIZE.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
        type == FLI_COLOR ifTrue:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
            self color64ChunkAt:chunkOffs.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
        ] ifFalse:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
            type == FLI_256_COLOR ifTrue:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
                self color256ChunkAt:chunkOffs.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   499
            ] ifFalse:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
                type == FLI_DELTA ifTrue:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   501
                    self deltaChunkAt:chunkOffs.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
                ] ifFalse:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
                    type == FLI_LC ifTrue:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
                        self lcChunkAt:chunkOffs.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   505
                    ] ifFalse:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
                        type == FLI_BRUN ifTrue:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   507
                            self brunChunkAt:chunkOffs.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
                        ] ifFalse:[
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
                            'FLI [info]: unknown chunk type: ' infoPrint.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
                            type hexPrintString infoPrintCR.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511
                            ^ false.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   512
                        ]
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   513
                    ]
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   514
                ]
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   515
            ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
        ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   517
        offs := offs + len
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
    ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   520
    "
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
     FLIReader fromFile:'/usr/local/FLI/jeffmild.fli'      
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   522
    "
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   523
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   524
    "Created: 3.4.1997 / 22:28:11 / cg"
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   525
    "Modified: 3.4.1997 / 22:52:38 / cg"
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   526
! !
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   527
1805
93f557cbe600 category changes
Claus Gittinger <cg@exept.de>
parents: 1759
diff changeset
   528
!FLIReader methodsFor:'reading'!
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   529
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   530
fromStream:aStream
512
e1f0a68c218d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 511
diff changeset
   531
    "read a FLI-movie from aStream."
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   532
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
    inStream := aStream.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   534
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   535
    (self getHeader) ifFalse:[^ nil].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   536
557
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   537
    Image badImageFormatQuerySignal handle:[:ex |
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   538
        ex errorString infoPrintCR.
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   539
        ^ nil
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   540
    ] do:[
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   541
        1 to:nframes do:[:frameIndex |
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   542
            self getFrame
4eb806135e3f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 552
diff changeset
   543
        ]
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   544
    ].
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   545
1759
f52382e5a9b8 slowly getting rid of the Colormap class
Claus Gittinger <cg@exept.de>
parents: 1745
diff changeset
   546
    colorMap := MappedPalette 
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   547
                    redVector:redPalette 
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   548
                    greenVector:greenPalette 
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   549
                    blueVector:bluePalette.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   550
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   551
    photometric := #palette.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   552
    samplesPerPixel := 1.
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   553
    bitsPerSample := #(8).
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   554
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   555
    "
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   556
     FLIReader fromFile:'/usr/local/FLI/jeffmild.fli'      
621
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   557
     Image fromFile:'/usr/local/FLI/jeffmild.fli'      
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   558
    "
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   559
621
7df3678991c1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 620
diff changeset
   560
    "Modified: 24.6.1997 / 15:58:18 / cg"
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   561
! !
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   562
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   563
!FLIReader class methodsFor:'documentation'!
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   564
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   565
version
1846
d29322944b05 dimensionReport
Claus Gittinger <cg@exept.de>
parents: 1805
diff changeset
   566
    ^ '$Header: /cvs/stx/stx/libview2/FLIReader.st,v 1.14 2003-11-19 15:28:19 cg Exp $'
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   567
! !
1745
4fa0fad2a463 code cleanup (colorMap handling)
Claus Gittinger <cg@exept.de>
parents: 647
diff changeset
   568
510
f328479994ab intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   569
FLIReader initialize!