private void readBorderLines( SearchRequest<RouteDataBorderLinePoint> req, TIntArrayList blocksToRead) throws IOException { while (true) { int t = codedIS.readTag(); int tag = WireFormat.getTagFieldNumber(t); switch (tag) { case 0: return; case RouteBorderBox.BORDERLINES_FIELD_NUMBER: { int fp = codedIS.getTotalBytesRead(); int length = codedIS.readRawVarint32(); int old = codedIS.pushLimit(length); RouteBorderLine ln = readBorderLine(); if (ln.hasTox() && req.intersects(ln.getX(), ln.getY(), ln.getTox(), ln.getY())) { blocksToRead.add(ln.getShiftToPointsBlock() + fp); // FIXME borders approach // } else if(ln.hasToy() && req.intersects(ln.getX(), ln.getY(), ln.getX(), // ln.getToy())) { // blocksToRead.add(ln.getShiftToPointsBlock() + fp); } codedIS.popLimit(old); break; } case RouteBorderBox.BLOCKS_FIELD_NUMBER: return; default: skipUnknownField(t); break; } } }
public void initRouteTypesIfNeeded(SearchRequest<RouteDataObject> req, List<RouteSubregion> list) throws IOException { for (RouteSubregion rs : list) { if (req.intersects(rs.left, rs.top, rs.right, rs.bottom)) { initRouteRegion(rs.routeReg); } } }
public List<RouteSubregion> loadInteresectedPoints( SearchRequest<RouteDataObject> req, List<RouteSubregion> list, List<RouteSubregion> toLoad) throws IOException { for (RouteSubregion rs : list) { if (req.intersects(rs.left, rs.top, rs.right, rs.bottom)) { if (rs.subregions == null) { codedIS.seek(rs.filePointer); int old = codedIS.pushLimit(rs.length); readRouteTree( rs, null, req.contains(rs.left, rs.top, rs.right, rs.bottom) ? -1 : 1, false); codedIS.popLimit(old); } searchRouteRegionTree(req, rs.subregions, toLoad); if (rs.shiftToData != 0) { toLoad.add(rs); } } } return toLoad; }