/** * Counts number of visual blocks in visual structure * * @param vipsBlock Visual structure */ private void getVisualBlocksCount(VipsBlock vipsBlock) { if (vipsBlock.isVisualBlock()) _visualBlocksCount++; for (VipsBlock vipsBlockChild : vipsBlock.getChildren()) { if (!(vipsBlockChild.getBox() instanceof TextBox)) getVisualBlocksCount(vipsBlockChild); } }
/** * Tries to divide DOM elements and finds visual blocks. * * @param vipsBlock Visual structure */ private void divideVipsBlockTree(VipsBlock vipsBlock) { _currentVipsBlock = vipsBlock; ElementBox elementBox = (ElementBox) vipsBlock.getBox(); // System.err.println(elementBox.getNode().getNodeName()); // System.out.println(elementBox.getText()); if (elementBox.getElement().getAttribute("id").equals("logosLine")) { System.out.println(); } // With VIPS rules it tries to determine if element is dividable if (applyVipsRules(elementBox) && vipsBlock.isDividable() && !vipsBlock.isVisualBlock()) { // if element is dividable, let's divide it _currentVipsBlock.setAlreadyDivided(true); for (VipsBlock vipsBlockChild : vipsBlock.getChildren()) { if (!(vipsBlockChild.getBox() instanceof TextBox)) divideVipsBlockTree(vipsBlockChild); } } else { if (vipsBlock.isDividable()) { // System.err.println("Element " + elementBox.getNode().getNodeName() + " is visual block"); vipsBlock.setIsVisualBlock(true); vipsBlock.setDoC(11); } if (!verifyValidity(elementBox)) { _currentVipsBlock.setIsVisualBlock(false); } /* if (vipsBlock.isVisualBlock()) //System.err.println("Element " + elementBox.getNode().getNodeName() + " is visual block"); else System.err.println("Element " + elementBox.getNode().getNodeName() + " is not visual block");*/ } }
private void findVisualBlocks(VipsBlock vipsBlock, List<VipsBlock> list) { if (vipsBlock.isVisualBlock()) list.add(vipsBlock); for (VipsBlock vipsStructureChild : vipsBlock.getChildren()) findVisualBlocks(vipsStructureChild, list); }