; Assembler header file for ImageFileRender
; Written by DefMod (Dec  9 2012) on Sun Dec  9 15:44:04 2012
; Tom Hughes, tom@compton.nu, 22 Nov 2002

; OSLib---efficient, type-safe, transparent, extensible,
; register-safe API coverage of RISC OS
; 
; Copyright (c) 1994-2012 Jonathan Coxhead and OSLib maintainers
; 
; Licence:
; 
;    OSLib 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 1, or (at your option)
; any later version - and this with the following clarification and
; special exception:
; 
;    Linking this library statically or dynamically with other modules
; is making a combined work based on this library. Thus, the terms
; and conditions of the GNU General Public License cover the whole
; combination.
; 
;    As a special exception, the copyright holders of this library
; give you permission to link this library with independent modules
; to produce an executable, regardless of the license terms of these
; independent modules, and to copy and distribute the resulting
; executable under terms of your choice, provided that you also meet,
; for each linked independent module, the terms and conditions of the
; license of that module. An independent module is a module which is
; not derived from or based on this library. If you modify this
; library, you may extend this exception to your version of the library,
; but you are not obliged to do so. If you do not wish to do so, delete
; this exception statement from your version.
; 
;    OSLib 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 programme; if not, write to the Free Software
; Foundation, Inc, 675 Mass Ave, Cambridge, MA 02139, USA.

        [       :LNOT: :DEF: ImageFileRender_Hdr
        GBLS    ImageFileRender_Hdr

        [       :LNOT: :DEF: Get_Types
        GBLS    Get_Types
        ]
        [       :LNOT: :DEF: Types_Hdr
Get_Types                       SETS    "GET oslib/Types.Hdr"
        |
Get_Types                       SETS    ""
        ]
        $Get_Types

        [       :LNOT: :DEF: Get_OS
        GBLS    Get_OS
        ]
        [       :LNOT: :DEF: OS_Hdr
Get_OS                          SETS    "GET oslib/OS.Hdr"
        |
Get_OS                          SETS    ""
        ]
        $Get_OS

        [       :LNOT: :DEF: Get_OSSpriteOp
        GBLS    Get_OSSpriteOp
        ]
        [       :LNOT: :DEF: OSSpriteOp_Hdr
Get_OSSpriteOp                  SETS    "GET oslib/OSSpriteOp.Hdr"
        |
Get_OSSpriteOp                  SETS    ""
        ]
        $Get_OSSpriteOp

        [       :LNOT: :DEF: Get_PDriver
        GBLS    Get_PDriver
        ]
        [       :LNOT: :DEF: PDriver_Hdr
Get_PDriver                     SETS    "GET oslib/PDriver.Hdr"
        |
Get_PDriver                     SETS    ""
        ]
        $Get_PDriver

;Symbols for constants
ImageFileRender_DefaultImage    *       &0
ImageFileRender_BaseDetailQuery *       &0
ImageFileRender_ImageIsSolid    *       &1
ImageFileRender_TransformationType *       &7
ImageFileRender_TransformationTypeShift *       0
ImageFileRender_RenderToFit     *       0
ImageFileRender_RenderScaled    *       1
ImageFileRender_RenderTransformed *       2
ImageFileRender_ColourMappingSupplied *       &8
ImageFileRender_IgnoreDocumentOrigin *       &10
ImageFileRender_ReturnOSUnits   *       &20
ImageFileRender_Quality         *       &1C0
ImageFileRender_QualityShift    *       6
ImageFileRender_DefaultQuality  *       0
ImageFileRender_LowestQuality   *       1
ImageFileRender_HighestQuality  *       15
ImageFileRender_TransformationCapabilities *       &3
ImageFileRender_TransformationCapabilitiesShift *       0
ImageFileRender_NoTransformation *       0
ImageFileRender_FixedAspectRatio *       1
ImageFileRender_AnyAspectRatio  *       2
ImageFileRender_AnyTransformation *       3
ImageFileRender_SupportsColourMapping *       &4
ImageFileRender_SupportsIrregularShapes *       &8
ImageFileRender_MaximumQualityLevel *       &F0
ImageFileRender_MaximumQualityLevelShift *       4
ImageFileRender_DefaultQualityLevel *       &F00
ImageFileRender_DefaultQualityLevelShift *       8

;Symbols for structure offsets and sizes
        ^       0
        #       Int
ImageFileRender_SequenceNumber  *       @

        ^       0
ImageFileRender_FitBlock_width  #       Int
ImageFileRender_FitBlock_height #       Int
ImageFileRender_FitBlock_border #       Int
ImageFileRender_FitBlock_angle  #       Int
ImageFileRender_FitBlock        *       @

        ^       0
ImageFileRender_TransformationData_to_fit #       ImageFileRender_FitBlock
        ^       0
ImageFileRender_TransformationData_scaled #       OS_Factors
        ^       0
ImageFileRender_TransformationData_transformed #       OS_Trfm
ImageFileRender_TransformationData *       @

        ^       0
        #       Int
ImageFileRender_QueryType       *       @

        ^       0
        #       Bits
ImageFileRender_ImageFlags      *       @

        ^       0
ImageFileRender_BaseDetails_sequence #       ImageFileRender_SequenceNumber
ImageFileRender_BaseDetails_xdpi #       Int
ImageFileRender_BaseDetails_ydpi #       Int
ImageFileRender_BaseDetails_colour_type #       OSSpriteOp_ModeWord
ImageFileRender_BaseDetails_image_flags #       ImageFileRender_ImageFlags
ImageFileRender_BaseDetails     *       @

        ^       0
        #       Bits
ImageFileRender_Flags           *       @

        ^       0
        #       Bits
ImageFileRender_RendererFlags   *       @

ImageFileRender_Magic           *       4 ;abstract type
        ^       0
ImageFileRender_Renderer_api_version #       Int
ImageFileRender_Renderer_flags  #       ImageFileRender_RendererFlags
ImageFileRender_Renderer_file_type #       Bits
ImageFileRender_Renderer_magic  #       ImageFileRender_Magic
ImageFileRender_Renderer_name   #       Ptr
ImageFileRender_Renderer_workspace #       Ptr
ImageFileRender_Renderer_start  #       Ptr
ImageFileRender_Renderer_stop   #       Ptr
ImageFileRender_Renderer_render #       Ptr
ImageFileRender_Renderer_bbox   #       Ptr
ImageFileRender_Renderer_declare_fonts #       Ptr
ImageFileRender_Renderer_info   #       Ptr
ImageFileRender_Renderer        *       @

        ^       0
ImageFileRender_ImageDescriptor_data #       Ptr
ImageFileRender_ImageDescriptor_size #       Int
ImageFileRender_ImageDescriptor_extension_data #       Ptr
ImageFileRender_ImageDescriptor_sequence #       ImageFileRender_SequenceNumber
ImageFileRender_ImageDescriptor_private_data #       Ptr
ImageFileRender_ImageDescriptor *       @

        ^       0
ImageFileRender_RenderingDescriptor_flags #       ImageFileRender_Flags
ImageFileRender_RenderingDescriptor_trfm #       OS_Trfm
ImageFileRender_RenderingDescriptor_bbox #       OS_Box
ImageFileRender_RenderingDescriptor_mapping #       OSSpriteOp_ColourMapping
ImageFileRender_RenderingDescriptor *       @

        ^       0
ImageFileRender_BBoxDescriptor_flags #       ImageFileRender_Flags
ImageFileRender_BBoxDescriptor_trfm #       OS_Trfm
ImageFileRender_BBoxDescriptor_bbox #       OS_Box
ImageFileRender_BBoxDescriptor  *       @

        ^       0
ImageFileRender_DeclareFontsDescriptor_flags #       ImageFileRender_Flags
ImageFileRender_DeclareFontsDescriptor_pdriver_flags #       PDriver_FontFlags
ImageFileRender_DeclareFontsDescriptor *       @

        ^       0
ImageFileRender_InfoDescriptor_query #       ImageFileRender_QueryType
ImageFileRender_InfoDescriptor_size #       Int
ImageFileRender_InfoDescriptor_data #       Ptr
ImageFileRender_InfoDescriptor  *       @


;Symbols for SWI's and SWI reason codes
XImageFileRender_Render         *       &762C0
ImageFileRender_Render          *       &562C0
   ;Entry
   ;  R0 = flags (ImageFileRender_Flags)
   ;  R1 = file_type (Bits)
   ;  R2 -> data (data)
   ;  R3 = size (Int)
   ;  R4 -> extension_data (data)
   ;  R5 = sequence (ImageFileRender_SequenceNumber)
   ;  R6 = xorigin (Int)
   ;  R7 = yorigin (Int)
   ;  R8 -> transformation_data (ImageFileRender_TransformationData)
   ;  R9 -> colour_mapping (OSSpriteOp_ColourMapping)

XImageFileRender_BBox           *       &762C1
ImageFileRender_BBox            *       &562C1
   ;Entry
   ;  R0 = flags (ImageFileRender_Flags)
   ;  R1 = file_type (Bits)
   ;  R2 -> data (data)
   ;  R3 = size (Int)
   ;  R4 -> extension_data (data)
   ;  R5 = sequence (ImageFileRender_SequenceNumber)
   ;  R6 -> transformation_data (ImageFileRender_TransformationData)
   ;  R7 = bbox (pointer to OS_Box)

XImageFileRender_Transform      *       &762C2
ImageFileRender_Transform       *       &562C2
   ;Entry
   ;  R0 = flags (ImageFileRender_Flags)
   ;  R1 = file_type (Bits)
   ;  R2 -> data (data)
   ;  R3 = size (Int)
   ;  R4 -> extension_data (data)
   ;  R5 = sequence (ImageFileRender_SequenceNumber)
   ;  R6 -> transformation_data (ImageFileRender_TransformationData)
   ;  R7 = trfm (pointer to OS_Trfm)
   ;Exit
   ;  R0 = xdpi (Int)
   ;  R1 = ydpi (Int)

XImageFileRender_DeclareFonts   *       &762C3
ImageFileRender_DeclareFonts    *       &562C3
   ;Entry
   ;  R0 = flags (ImageFileRender_Flags)
   ;  R1 = file_type (Bits)
   ;  R2 -> data (data)
   ;  R3 = size (Int)
   ;  R4 -> extension_data (data)
   ;  R5 = sequence (ImageFileRender_SequenceNumber)
   ;  R6 = pdriver_flags (PDriver_FontFlags)

XImageFileRender_Info           *       &762C4
ImageFileRender_Info            *       &562C4
   ;Entry
   ;  R0 = flags (ImageFileRender_Flags)
   ;  R1 = file_type (Bits)
   ;  R2 -> data (data)
   ;  R3 = size (Int)
   ;  R4 -> extension_data (data)
   ;  R5 = sequence (ImageFileRender_SequenceNumber)
   ;  R6 = query (ImageFileRender_QueryType)
   ;  R7 = query_data (pointer to data)
   ;  R8 = query_data_size (Int)
   ;Exit
   ;  R8 = size_used (Int)

ImageFileRender_InfoBaseDetails *       &0
   ;Entry
   ;  R0 = flags (ImageFileRender_Flags)
   ;  R1 = file_type (Bits)
   ;  R2 -> data (data)
   ;  R3 = size (Int)
   ;  R4 -> extension_data (data)
   ;  R5 = sequence (ImageFileRender_SequenceNumber)
   ;  R6 = &0
   ;  R7 = base_details (pointer to ImageFileRender_BaseDetails)
   ;  R8 = base_details_size (Int)
   ;Exit
   ;  R8 = size_used (Int)

XImageFileRender_RendererInfo   *       &762C5
ImageFileRender_RendererInfo    *       &562C5
   ;Entry
   ;  R0 = flags (ImageFileRender_Flags)
   ;  R1 = file_type (Bits)
   ;  R2 = magic (ImageFileRender_Magic)
   ;Exit
   ;  R0 -> definition (ImageFileRender_Renderer)
   ;  R1 = name (pointer to Char)

XImageFileRender_Register       *       &762C6
ImageFileRender_Register        *       &562C6
   ;Entry
   ;  R0 = flags (ImageFileRender_Flags)
   ;  R1 -> definition (ImageFileRender_Renderer)
   ;Exit
   ;  R1 = api_version (Int)

XImageFileRender_Deregister     *       &762C7
ImageFileRender_Deregister      *       &562C7
   ;Entry
   ;  R0 = flags (ImageFileRender_Flags)
   ;  R1 = file_type (Bits)
   ;  R2 -> name (Char)
   ;  R3 = magic (ImageFileRender_Magic)
   ;Exit
   ;  R1 = api_version (Int)

Service_ImageFileRenderStarted  *       &80D40
   ;Entry
   ;  R0 = api_version (Int)
   ;  R1 = &80D40

Service_ImageFileRenderDying    *       &80D41
   ;Entry
   ;  R0 = api_version (Int)
   ;  R1 = &80D41

Service_ImageFileRenderRendererChanged *       &80D42
   ;Entry
   ;  R0 = api_version (Int)
   ;  R1 = &80D42
   ;  R2 = file_type (Bits)

        ]
        END
