private boolean pageHasTransparency()

in src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java [234:286]


            private boolean pageHasTransparency(PDResources res, final PDPage page) throws IOException {
                if (res != null) {
                    visited.add(res.getCOSObject());
                    if (res.getShadingNames() != null) {
                        for (COSName name : res.getShadingNames()) {
                            PDShading s = res.getShading(name);
                            if ((s.getShadingType() != 2 && s.getShadingType() != 3)
                                    || (s.getShadingType() == 3 && s.getFunction().getFunctionType() == 2)
                                    || (s.getShadingType() == 2
                                    && s.getColorSpace().toString().contains("FunctionType"))) {
                                LOG.warn(s.getClass().getName() + " not supported converting to image");
                                return true;
                            }
//                        if (s.getShadingType() == 3) {
//                            COSArray sourceFunctions = ((PDFunctionType3)s.getFunction()).getFunctions();
//                            for (COSBase sf : sourceFunctions) {
//                                PDFunction f = PDFunction.create(sf);
//                                if (f.getFunctionType() == 2) {
//                                    LOG.warn(s.getClass().getName() + " not supported converting to image");
//                                    return true;
//                                }
//                            }
//                        }
                        }
                    }
                    int count = 0;
                    for (COSName pdxObjectName : res.getXObjectNames()) {
                        PDXObject pdxObject = res.getXObject(pdxObjectName);
                        visitedXOjects.put(pdxObjectName.getName(), pdxObject);
                        if (pdxObject instanceof PDFormXObject) {
                            PDFormXObject form = (PDFormXObject) pdxObject;
                            if (form.getGroup() != null && COSName.TRANSPARENCY.equals(
                                    form.getGroup().getCOSObject().getDictionaryObject(COSName.S))) {
                                if (form.getGroup().getCOSObject().getItem(COSName.TYPE) != COSName.GROUP) {
                                    return true;
                                }
                                count++;
                            }
                            PDResources formRes = form.getResources();
                            if (formRes != null && !visited.contains(formRes.getCOSObject())
                                    && pageHasTransparency(formRes, page)) {
                                return true;
                            }
                        }
                    }
                    hasTransparencyGroup = count > 0;
                    if (count > 1) {
                        return true;
                    }
                }
                CheckImageMask checkImageMask = new CheckImageMask(visitedXOjects, page);
                return checkImageMask.foundWhite;
            }