OpenJPH Open-source implementation of JPEG2000 Part-15

Loading...
Searching...
No Matches
ojph_tile_comp.h
Go to the documentation of this file.
1
2//***************************************************************************/
3// This software is released under the 2-Clause BSD license, included
4// below.
5//
6// Copyright (c) 2019, Aous Naman
7// Copyright (c) 2019, Kakadu Software Pty Ltd, Australia
8// Copyright (c) 2019, The University of New South Wales, Australia
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
22// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
23// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
24// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
27// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32//***************************************************************************/
33// This file is part of the OpenJPH software implementation.
34// File: ojph_tile_comp.h
35// Author: Aous Naman
36// Date: 28 August 2019
37//***************************************************************************/
38
39
40#ifndef OJPH_TILE_COMP_H
41#define OJPH_TILE_COMP_H
42
43#include "ojph_defs.h"
44#include "ojph_base.h"
45#include "ojph_file.h"
46
47 namespace ojph {
48
50 //defined elsewhere
51 class line_buf;
52 class codestream;
53
54 namespace local {
55
57 //defined here
58 class tile;
59 class resolution;
60
62 class tile_comp
63 {
64 public:
65 static void pre_alloc(codestream *codestream, ui32 comp_num,
66 const rect& comp_rect,
67 const rect& recon_comp_rect);
68 void finalize_alloc(codestream *codestream, tile *parent,
69 ui32 comp_num, const rect& comp_rect,
70 const rect& recon_comp_rect);
71
72 ui32 get_num_resolutions() { return num_decomps + 1; }
73 ui32 get_num_decompositions() { return num_decomps; }
74 tile* get_tile() { return parent_tile; }
75 line_buf* get_line();
76 void push_line();
77 line_buf* pull_line();
78
79 ui32 prepare_precincts();
80 void write_precincts(ui32 res_num, outfile_base *file);
81 bool get_top_left_precinct(ui32 res_num, point &top_left);
82 void write_one_precinct(ui32 res_num, outfile_base *file);
83 void parse_precincts(ui32 res_num, ui32& data_left, infile_base *file);
84 void parse_one_precinct(ui32 res_num, ui32& data_left,
85 infile_base *file);
86
87 ui32 get_num_bytes() const { return num_bytes; }
88 ui32 get_num_bytes(ui32 resolution_num) const;
89
90 private:
91 tile *parent_tile;
92 resolution *res;
93 rect comp_rect;
94 ojph::point comp_downsamp;
95 ui32 num_decomps;
96 ui32 comp_num;
97 ui32 num_bytes; // number of bytes in this tile component
98 // used for tilepart length
99 };
100
101 }
102}
103
104#endif // !OJPH_TILE_COMP_H
ojph::codestream
The object represent a codestream.
Definition ojph_codestream.h:89
ojph::infile_base
Definition ojph_file.h:267
ojph::line_buf
Definition ojph_mem.h:161
ojph::local::codestream
Definition ojph_codestream_local.h:69
ojph::local::resolution
Definition ojph_resolution.h:62
ojph::local::tile_comp
Definition ojph_tile_comp.h:63
ojph::local::tile_comp::get_tile
tile * get_tile()
Definition ojph_tile_comp.h:74
ojph::local::tile_comp::get_line
line_buf * get_line()
Definition ojph_tile_comp.cpp:92
ojph::local::tile_comp::num_decomps
ui32 num_decomps
Definition ojph_tile_comp.h:95
ojph::local::tile_comp::parent_tile
tile * parent_tile
Definition ojph_tile_comp.h:91
ojph::local::tile_comp::get_num_resolutions
ui32 get_num_resolutions()
Definition ojph_tile_comp.h:72
ojph::local::tile_comp::get_num_decompositions
ui32 get_num_decompositions()
Definition ojph_tile_comp.h:73
ojph::local::tile_comp::get_top_left_precinct
bool get_top_left_precinct(ui32 res_num, point &top_left)
Definition ojph_tile_comp.cpp:132
ojph::local::tile_comp::num_bytes
ui32 num_bytes
Definition ojph_tile_comp.h:97
ojph::local::tile_comp::write_one_precinct
void write_one_precinct(ui32 res_num, outfile_base *file)
Definition ojph_tile_comp.cpp:148
ojph::local::tile_comp::pull_line
line_buf * pull_line()
Definition ojph_tile_comp.cpp:104
ojph::local::tile_comp::pre_alloc
static void pre_alloc(codestream *codestream, ui32 comp_num, const rect &comp_rect, const rect &recon_comp_rect)
Definition ojph_tile_comp.cpp:54
ojph::local::tile_comp::comp_rect
rect comp_rect
Definition ojph_tile_comp.h:93
ojph::local::tile_comp::comp_num
ui32 comp_num
Definition ojph_tile_comp.h:96
ojph::local::tile_comp::res
resolution * res
Definition ojph_tile_comp.h:92
ojph::local::tile_comp::finalize_alloc
void finalize_alloc(codestream *codestream, tile *parent, ui32 comp_num, const rect &comp_rect, const rect &recon_comp_rect)
Definition ojph_tile_comp.cpp:70
ojph::local::tile_comp::parse_one_precinct
void parse_one_precinct(ui32 res_num, ui32 &data_left, infile_base *file)
Definition ojph_tile_comp.cpp:179
ojph::local::tile_comp::push_line
void push_line()
Definition ojph_tile_comp.cpp:98
ojph::local::tile_comp::comp_downsamp
ojph::point comp_downsamp
Definition ojph_tile_comp.h:94
ojph::local::tile_comp::prepare_precincts
ui32 prepare_precincts()
Definition ojph_tile_comp.cpp:110
ojph::local::tile_comp::write_precincts
void write_precincts(ui32 res_num, outfile_base *file)
Definition ojph_tile_comp.cpp:117
ojph::local::tile_comp::get_num_bytes
ui32 get_num_bytes() const
Definition ojph_tile_comp.h:87
ojph::local::tile_comp::parse_precincts
void parse_precincts(ui32 res_num, ui32 &data_left, infile_base *file)
Definition ojph_tile_comp.cpp:162
ojph::local::tile
Definition ojph_tile.h:61
ojph::outfile_base
Definition ojph_file.h:75
ojph::local
Definition ojph_bitbuffer_read.h:52
ojph
Definition ojph_img_io.h:52
ojph::ui32
uint32_t ui32
Definition ojph_defs.h:54
ojph_base.h
ojph_defs.h
ojph_file.h
ojph::point
Definition ojph_base.h:58
ojph::rect
Definition ojph_base.h:65