- index_param_t *codeidx;
- imgreg_param_t imgreg;
- range_param_t tile_Xrange, tile_Yrange;
- Byte4_t u, v, tile_id;
- int xmin, xmax, ymin, ymax;
- int numOfreslev;
-
- codeidx = msgqueue->cachemodel->target->codeidx;
-
- if( !(msgqueue->cachemodel->jppstream) && get_nmax( codeidx->tilepart) == 1) /* normally not the case */
- numOfreslev = 1;
- else
- numOfreslev = codeidx->COD.numOfdecomp+1;
-
- imgreg = map_viewin2imgreg( query_param.fx, query_param.fy,
- query_param.rx, query_param.ry, query_param.rw, query_param.rh,
- (int)codeidx->SIZ.XOsiz, (int)codeidx->SIZ.YOsiz, (int)codeidx->SIZ.Xsiz, (int)codeidx->SIZ.Ysiz,
- numOfreslev );
-
- if( query_param.len == 0)
- return;
-
- for( u=0, tile_id=0; u<codeidx->SIZ.YTnum; u++){
- tile_Yrange = get_tile_Yrange( codeidx->SIZ, tile_id, imgreg.level);
-
- for( v=0; v<codeidx->SIZ.XTnum; v++, tile_id++){
- tile_Xrange = get_tile_Xrange( codeidx->SIZ, tile_id, imgreg.level);
-
- if( tile_Xrange.minvalue < tile_Xrange.maxvalue && tile_Yrange.minvalue < tile_Yrange.maxvalue){
- if( tile_Xrange.maxvalue <= (Byte4_t)(imgreg.xosiz + imgreg.ox) ||
- tile_Xrange.minvalue >= (Byte4_t)(imgreg.xosiz + imgreg.ox + imgreg.sx) ||
- tile_Yrange.maxvalue <= (Byte4_t)(imgreg.yosiz + imgreg.oy) ||
- tile_Yrange.minvalue >= (Byte4_t)(imgreg.yosiz + imgreg.oy + imgreg.sy)) {
- /*printf("Tile completely excluded from view-window %d\n", tile_id);*/
- /* Tile completely excluded from view-window */
- }
- else if( tile_Xrange.minvalue >= (Byte4_t)(imgreg.xosiz + imgreg.ox) &&
- tile_Xrange.maxvalue <= (Byte4_t)(imgreg.xosiz + imgreg.ox + imgreg.sx) &&
- tile_Yrange.minvalue >= (Byte4_t)(imgreg.yosiz + imgreg.oy) &&
- tile_Yrange.maxvalue <= (Byte4_t)(imgreg.yosiz + imgreg.oy + imgreg.sy)) {
- /* Tile completely contained within view-window */
- /* high priority */
- /*printf("Tile completely contained within view-window %d\n", tile_id);*/
- if( msgqueue->cachemodel->jppstream){
- enqueue_tileheader( (int)tile_id, msgqueue);
- enqueue_allprecincts( (int)tile_id, imgreg.level, query_param.lastcomp, query_param.comps, query_param.layers, msgqueue);
- }
- else
- enqueue_tile( tile_id, imgreg.level, msgqueue);
- }
- else{
- /* Tile partially overlaps view-window */
- /* low priority */
- /*printf("Tile partially overlaps view-window %d\n", tile_id);*/
- if( msgqueue->cachemodel->jppstream){
- enqueue_tileheader( (int)tile_id, msgqueue);
-
- /* FIXME: The following code is suspicious it implicitely cast an unsigned int to int, which truncates values */
- xmin = tile_Xrange.minvalue >= (Byte4_t)(imgreg.xosiz + imgreg.ox) ? 0 : imgreg.xosiz + imgreg.ox - (int)tile_Xrange.minvalue;
- xmax = tile_Xrange.maxvalue <= (Byte4_t)(imgreg.xosiz + imgreg.ox + imgreg.sx) ? (int)(tile_Xrange.maxvalue - tile_Xrange.minvalue -1) : (int)(imgreg.xosiz + imgreg.ox + imgreg.sx - (int)tile_Xrange.minvalue - 1);
- ymin = tile_Yrange.minvalue >= (Byte4_t)(imgreg.yosiz + imgreg.oy) ? 0 : imgreg.yosiz + imgreg.oy - (int)tile_Yrange.minvalue;
- ymax = tile_Yrange.maxvalue <= (Byte4_t)(imgreg.yosiz + imgreg.oy + imgreg.sy) ? (int)(tile_Yrange.maxvalue - tile_Yrange.minvalue - 1) : (int)(imgreg.yosiz + imgreg.oy + imgreg.sy - (int)tile_Yrange.minvalue - 1);
- enqueue_precincts( xmin, xmax, ymin, ymax, (int)tile_id, imgreg.level, query_param.lastcomp, query_param.comps, query_param.layers, msgqueue);
- }
- else
- enqueue_tile( tile_id, imgreg.level, msgqueue);
- }
- }
+ index_param_t *codeidx;
+ imgreg_param_t imgreg;
+ range_param_t tile_Xrange, tile_Yrange;
+ Byte4_t u, v, tile_id;
+ int xmin, xmax, ymin, ymax;
+ int numOfreslev;
+
+ codeidx = msgqueue->cachemodel->target->codeidx;
+
+ if (!(msgqueue->cachemodel->jppstream) &&
+ get_nmax(codeidx->tilepart) == 1) { /* normally not the case */
+ numOfreslev = 1;
+ } else {
+ numOfreslev = codeidx->COD.numOfdecomp + 1;
+ }
+
+ imgreg = map_viewin2imgreg(query_param.fx, query_param.fy,
+ query_param.rx, query_param.ry, query_param.rw, query_param.rh,
+ (int)codeidx->SIZ.XOsiz, (int)codeidx->SIZ.YOsiz, (int)codeidx->SIZ.Xsiz,
+ (int)codeidx->SIZ.Ysiz,
+ numOfreslev);
+
+ if (query_param.len == 0) {
+ return;
+ }
+
+ for (u = 0, tile_id = 0; u < codeidx->SIZ.YTnum; u++) {
+ tile_Yrange = get_tile_Yrange(codeidx->SIZ, tile_id, imgreg.level);
+
+ for (v = 0; v < codeidx->SIZ.XTnum; v++, tile_id++) {
+ tile_Xrange = get_tile_Xrange(codeidx->SIZ, tile_id, imgreg.level);
+
+ if (tile_Xrange.minvalue < tile_Xrange.maxvalue &&
+ tile_Yrange.minvalue < tile_Yrange.maxvalue) {
+ if (tile_Xrange.maxvalue <= (Byte4_t)(imgreg.xosiz + imgreg.ox) ||
+ tile_Xrange.minvalue >= (Byte4_t)(imgreg.xosiz + imgreg.ox + imgreg.sx) ||
+ tile_Yrange.maxvalue <= (Byte4_t)(imgreg.yosiz + imgreg.oy) ||
+ tile_Yrange.minvalue >= (Byte4_t)(imgreg.yosiz + imgreg.oy + imgreg.sy)) {
+ /*printf("Tile completely excluded from view-window %d\n", tile_id);*/
+ /* Tile completely excluded from view-window */
+ } else if (tile_Xrange.minvalue >= (Byte4_t)(imgreg.xosiz + imgreg.ox) &&
+ tile_Xrange.maxvalue <= (Byte4_t)(imgreg.xosiz + imgreg.ox + imgreg.sx) &&
+ tile_Yrange.minvalue >= (Byte4_t)(imgreg.yosiz + imgreg.oy) &&
+ tile_Yrange.maxvalue <= (Byte4_t)(imgreg.yosiz + imgreg.oy + imgreg.sy)) {
+ /* Tile completely contained within view-window */
+ /* high priority */
+ /*printf("Tile completely contained within view-window %d\n", tile_id);*/
+ if (msgqueue->cachemodel->jppstream) {
+ enqueue_tileheader((int)tile_id, msgqueue);
+ enqueue_allprecincts((int)tile_id, imgreg.level, query_param.lastcomp,
+ query_param.comps, query_param.layers, msgqueue);
+ } else {
+ enqueue_tile(tile_id, imgreg.level, msgqueue);
+ }
+ } else {
+ /* Tile partially overlaps view-window */
+ /* low priority */
+ /*printf("Tile partially overlaps view-window %d\n", tile_id);*/
+ if (msgqueue->cachemodel->jppstream) {
+ enqueue_tileheader((int)tile_id, msgqueue);
+
+ /* FIXME: The following code is suspicious it implicitely cast an unsigned int to int, which truncates values */
+ xmin = tile_Xrange.minvalue >= (Byte4_t)(imgreg.xosiz + imgreg.ox) ? 0 :
+ imgreg.xosiz + imgreg.ox - (int)tile_Xrange.minvalue;
+ xmax = tile_Xrange.maxvalue <= (Byte4_t)(imgreg.xosiz + imgreg.ox + imgreg.sx)
+ ? (int)(tile_Xrange.maxvalue - tile_Xrange.minvalue - 1) : (int)(
+ imgreg.xosiz + imgreg.ox + imgreg.sx - (int)tile_Xrange.minvalue - 1);
+ ymin = tile_Yrange.minvalue >= (Byte4_t)(imgreg.yosiz + imgreg.oy) ? 0 :
+ imgreg.yosiz + imgreg.oy - (int)tile_Yrange.minvalue;
+ ymax = tile_Yrange.maxvalue <= (Byte4_t)(imgreg.yosiz + imgreg.oy + imgreg.sy)
+ ? (int)(tile_Yrange.maxvalue - tile_Yrange.minvalue - 1) : (int)(
+ imgreg.yosiz + imgreg.oy + imgreg.sy - (int)tile_Yrange.minvalue - 1);
+ enqueue_precincts(xmin, xmax, ymin, ymax, (int)tile_id, imgreg.level,
+ query_param.lastcomp, query_param.comps, query_param.layers, msgqueue);
+ } else {
+ enqueue_tile(tile_id, imgreg.level, msgqueue);
+ }
+ }
+ }
+ }