OLD | NEW |
1 | 1 |
2 //---------------------------------------------------------------------------- | 2 //---------------------------------------------------------------------------- |
3 // XYQ: 2006-01-22 Copied from AGG project. | 3 // XYQ: 2006-01-22 Copied from AGG project. |
4 // This file uses only integer data, so it's suitable for all platforms. | 4 // This file uses only integer data, so it's suitable for all platforms. |
5 //---------------------------------------------------------------------------- | 5 //---------------------------------------------------------------------------- |
6 //---------------------------------------------------------------------------- | 6 //---------------------------------------------------------------------------- |
7 // Anti-Grain Geometry - Version 2.3 | 7 // Anti-Grain Geometry - Version 2.3 |
8 // Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com) | 8 // Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com) |
9 // | 9 // |
10 // Permission to copy, use, modify, sell and distribute this software | 10 // Permission to copy, use, modify, sell and distribute this software |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 m_min_x = 0x7FFFFFFF; | 110 m_min_x = 0x7FFFFFFF; |
111 m_min_y = 0x7FFFFFFF; | 111 m_min_y = 0x7FFFFFFF; |
112 m_max_x = -0x7FFFFFFF; | 112 m_max_x = -0x7FFFFFFF; |
113 m_max_y = -0x7FFFFFFF; | 113 m_max_y = -0x7FFFFFFF; |
114 } | 114 } |
115 void outline_aa::allocate_block() | 115 void outline_aa::allocate_block() |
116 { | 116 { |
117 if(m_cur_block >= m_num_blocks) { | 117 if(m_cur_block >= m_num_blocks) { |
118 if(m_num_blocks >= m_max_blocks) { | 118 if(m_num_blocks >= m_max_blocks) { |
119 cell_aa** new_cells = FX_Alloc( cell_aa*, m_max_blocks + cell_block_
pool); | 119 cell_aa** new_cells = FX_Alloc( cell_aa*, m_max_blocks + cell_block_
pool); |
120 if (!new_cells) { | |
121 return; | |
122 } | |
123 if(m_cells) { | 120 if(m_cells) { |
124 FXSYS_memcpy32(new_cells, m_cells, m_max_blocks * sizeof(cell_aa
*)); | 121 FXSYS_memcpy32(new_cells, m_cells, m_max_blocks * sizeof(cell_aa
*)); |
125 FX_Free(m_cells); | 122 FX_Free(m_cells); |
126 } | 123 } |
127 m_cells = new_cells; | 124 m_cells = new_cells; |
128 m_max_blocks += cell_block_pool; | 125 m_max_blocks += cell_block_pool; |
129 } | 126 } |
130 m_cells[m_num_blocks++] = FX_Alloc(cell_aa, cell_block_size); | 127 m_cells[m_num_blocks++] = FX_Alloc(cell_aa, cell_block_size); |
131 if (!m_cells[m_num_blocks - 1]) { | |
132 return; | |
133 } | |
134 } | 128 } |
135 m_cur_cell_ptr = m_cells[m_cur_block++]; | 129 m_cur_cell_ptr = m_cells[m_cur_block++]; |
136 } | 130 } |
137 AGG_INLINE void outline_aa::add_cur_cell() | 131 AGG_INLINE void outline_aa::add_cur_cell() |
138 { | 132 { |
139 if(m_cur_cell.area | m_cur_cell.cover) { | 133 if(m_cur_cell.area | m_cur_cell.cover) { |
140 if((m_num_cells & cell_block_mask) == 0) { | 134 if((m_num_cells & cell_block_mask) == 0) { |
141 if(m_num_blocks >= cell_block_limit) { | 135 if(m_num_blocks >= cell_block_limit) { |
142 return; | 136 return; |
143 } | 137 } |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 } | 480 } |
487 for(i = 0; i < m_sorted_y.size(); i++) { | 481 for(i = 0; i < m_sorted_y.size(); i++) { |
488 const sorted_y& cur_y = m_sorted_y[i]; | 482 const sorted_y& cur_y = m_sorted_y[i]; |
489 if(cur_y.num) { | 483 if(cur_y.num) { |
490 qsort_cells(m_sorted_cells.data() + cur_y.start, cur_y.num); | 484 qsort_cells(m_sorted_cells.data() + cur_y.start, cur_y.num); |
491 } | 485 } |
492 } | 486 } |
493 m_sorted = true; | 487 m_sorted = true; |
494 } | 488 } |
495 } | 489 } |
OLD | NEW |