Back to... PDF Writer

Source file : gid-decoding_jpg.ads



private package GID.Decoding_JPG is

  use JPEG_defs;

  type JPEG_marker is
  (
    SOI, --  Start Of Image
    --
    SOF_0, --  Start Of Frame - Baseline DCT
    SOF_1, --  Extended sequential DCT
    SOF_2, --  Progressive DCT
    SOF_3, --  Lossless (sequential)
    SOF_5, --  Differential sequential DCT
    SOF_6, --  Differential progressive DCT
    SOF_7, --  Differential lossless (sequential)
    SOF_8, --  Reserved for JPEG extensions
    SOF_9, --  Extended sequential DCT
    SOF_10, --  Progressive DCT
    SOF_11, --  Lossless (sequential)
    SOF_13, --  Differential sequential DCT
    SOF_14, --  Differential progressive DCT
    SOF_15, --  Differential lossless (sequential)
    --
    DHT, --  Define Huffman Table
    DAC, --  Define Arithmetic Coding
    DQT, --  Define Quantization Table
    DRI, --  Define Restart Interval
    --
    APP_0, --  JFIF - JFIF JPEG image - AVI1 - Motion JPEG (MJPG)
    APP_1, --  EXIF Metadata, TIFF IFD format, JPEG Thumbnail (160x120)
    APP_2, --  ICC color profile, FlashPix
    APP_3,
    APP_4,
    APP_5,
    APP_6,
    APP_7,
    APP_8,
    APP_9,
    APP_10,
    APP_11,
    APP_12, --  Picture Info
    APP_13, --  Photoshop Save As: IRB, 8BIM, IPTC
    APP_14, --  Copyright Entries
    --
    COM, --  Comments
    SOS, --  Start of Scan
    EOI        --  End of Image
  );

  YCbCr_set : constant Compo_set := (Y | Cb | Cr => True, others => False);
  Y_Grey_set : constant Compo_set := (Y => True, others => False);
  CMYK_set  : constant Compo_set := (Y | Cb | Cr | I => True, others => False);

  type Segment_head is record
    length : U16;
    kind   : JPEG_marker;
  end record;

  procedure Read (image : in out Image_descriptor; sh : out Segment_head);

  --  SOF - Start Of Frame (the real header)
  procedure Read_SOF (image : in out Image_descriptor; sh : Segment_head);

  procedure Read_DHT (image : in out Image_descriptor; data_length : Natural);
  procedure Read_DQT (image : in out Image_descriptor; data_length : Natural);
  procedure Read_DRI (image : in out Image_descriptor);

  procedure Read_EXIF (image : in out Image_descriptor; data_length : Natural);

  --------------------
  -- Image decoding --
  --------------------

  generic
    type Primary_color_range is mod <>;
    with procedure Set_X_Y (x, y : Natural);
    with procedure Put_Pixel (
      red, green, blue : Primary_color_range;
      alpha            : Primary_color_range
    );
    with procedure Feedback (percents : Natural);
    --  mode: Display_mode; -- nice -> progressive nicely displayed
  --
  procedure Load (image : in out Image_descriptor);

end GID.Decoding_JPG;


Ada PDF Writer: Ada package for writing PDF files (.pdf). Ada programming.
Some news about Ada PDF Writer and other Ada projects on Gautier's blog.