Search in sources :

Example 26 with EncodedImage

use of com.codename1.ui.EncodedImage in project CodenameOne by codenameone.

the class DefaultDocumentRequestHandler method resourceRequested.

private InputStream resourceRequested(final DocumentInfo docInfo, final IOCallback callback) {
    String url = docInfo.getUrl();
    visitingURL(url);
    // trim anchors
    int hash = url.indexOf('#');
    if (hash != -1) {
        url = url.substring(0, hash);
    }
    if (url.startsWith("jar://")) {
        callback.streamReady(Display.getInstance().getResourceAsStream(getClass(), docInfo.getUrl().substring(6)), docInfo);
        return null;
    } else {
        try {
            if (url.startsWith("local://")) {
                Image img = resFile.getImage(url.substring(8));
                if (img instanceof EncodedImage) {
                    callback.streamReady(new ByteArrayInputStream(((EncodedImage) img).getImageData()), docInfo);
                }
            }
            if (url.startsWith("res://")) {
                InputStream i = Display.getInstance().getResourceAsStream(getClass(), docInfo.getUrl().substring(6));
                Resources r = Resources.open(i);
                i.close();
                i = r.getData(docInfo.getParams());
                if (i != null) {
                    callback.streamReady(i, docInfo);
                } else {
                    Image img = r.getImage(docInfo.getParams());
                    if (img instanceof EncodedImage) {
                        callback.streamReady(new ByteArrayInputStream(((EncodedImage) img).getImageData()), docInfo);
                    }
                }
                return null;
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
    return null;
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) Resources(com.codename1.ui.util.Resources) IOException(java.io.IOException) Image(com.codename1.ui.Image) EncodedImage(com.codename1.ui.EncodedImage) EncodedImage(com.codename1.ui.EncodedImage)

Example 27 with EncodedImage

use of com.codename1.ui.EncodedImage in project CodenameOne by codenameone.

the class Resources method readMultiImage.

Image readMultiImage(DataInputStream input, boolean skipAll) throws IOException {
    EncodedImage resultImage = null;
    if (dpi == -1) {
        dpi = Display.getInstance().getDeviceDensity();
    }
    int dpiCount = input.readInt();
    int bestFitOffset = 0;
    int bestFitDPI = 0;
    int[] lengths = new int[dpiCount];
    int[] dpis = new int[dpiCount];
    boolean found = false;
    for (int iter = 0; iter < dpiCount; iter++) {
        int currentDPI = input.readInt();
        lengths[iter] = input.readInt();
        dpis[iter] = currentDPI;
        if (bestFitDPI != dpi && dpi >= currentDPI && currentDPI >= bestFitDPI) {
            bestFitDPI = currentDPI;
            bestFitOffset = iter;
            found = true;
        }
    }
    if (!found) {
        // special case for low DPI devices when running with high resolution resources
        // we want to pick the loweset resolution possible
        bestFitDPI = dpis[0];
        bestFitOffset = 0;
        for (int iter = 1; iter < dpiCount; iter++) {
            if (dpis[iter] < bestFitDPI) {
                bestFitDPI = dpis[iter];
                bestFitOffset = iter;
            }
        }
    }
    if (runtimeMultiImages && !skipAll) {
        byte[][] data = new byte[dpiCount][];
        for (int iter = 0; iter < lengths.length; iter++) {
            int size = lengths[iter];
            data[iter] = new byte[size];
            input.readFully(data[iter], 0, size);
        }
        return EncodedImage.createMulti(dpis, data);
    } else {
        for (int iter = 0; iter < lengths.length; iter++) {
            int size = lengths[iter];
            if (!skipAll && bestFitOffset == iter) {
                byte[] multiImageData = new byte[size];
                input.readFully(multiImageData, 0, size);
                resultImage = EncodedImage.create(multiImageData);
            } else {
                while (size > 0) {
                    size -= input.skip(size);
                }
            }
        }
    }
    return resultImage;
}
Also used : EncodedImage(com.codename1.ui.EncodedImage)

Example 28 with EncodedImage

use of com.codename1.ui.EncodedImage in project codenameone-google-maps by codenameone.

the class MapLayout method installMarkerFor.

private void installMarkerFor(Component c) {
    MapObject marker = (MapObject) c.getClientProperty(MARKER_KEY);
    if (marker != null) {
        map.removeMapObject(marker);
        markers.remove(marker);
        c.putClientProperty(MARKER_KEY, null);
    }
    Image im = generateMarkerImage(c);
    if (im == null) {
        return;
    }
    EncodedImage img = EncodedImage.createFromImage(generateMarkerImage(c), false);
    Float h = (Float) c.getClientProperty(HORIZONTAL_ALIGNMENT);
    if (h == null) {
        h = 0f;
    }
    Float v = (Float) c.getClientProperty(VERTICAL_ALIGNMENT);
    if (v == null) {
        v = 0f;
    }
    MarkerOptions markerOpts = new MarkerOptions((Coord) c.getClientProperty(COORD_KEY), img).anchorU(h).anchorV(v);
    marker = map.addMarker(markerOpts);
    c.putClientProperty(MARKER_KEY, marker);
    markers.add(marker);
}
Also used : MarkerOptions(com.codename1.googlemaps.MapContainer.MarkerOptions) Image(com.codename1.ui.Image) EncodedImage(com.codename1.ui.EncodedImage) MapObject(com.codename1.googlemaps.MapContainer.MapObject) EncodedImage(com.codename1.ui.EncodedImage)

Example 29 with EncodedImage

use of com.codename1.ui.EncodedImage in project codenameone-google-maps by codenameone.

the class GoogleMapsTestApp method start.

public void start() {
    if (current != null) {
        current.show();
        return;
    }
    Form hi = new Form("Native Maps Test");
    hi.setLayout(new BorderLayout());
    final MapContainer cnt = new MapContainer(HTML_API_KEY);
    // final MapContainer cnt = new MapContainer();
    // this breaks the code //because the Google map is not loaded yet
    cnt.setCameraPosition(new Coord(-26.1486233, 28.67401229999996));
    cnt.addMapListener(new MapListener() {

        @Override
        public void mapPositionUpdated(Component source, int zoom, Coord center) {
            System.out.println("Map position updated: zoom=" + zoom + ", Center=" + center);
        }
    });
    cnt.addLongPressListener(e -> {
        System.out.println("Long press");
        ToastBar.showMessage("Received longPress at " + e.getX() + ", " + e.getY(), FontImage.MATERIAL_3D_ROTATION);
    });
    cnt.addTapListener(e -> {
        ToastBar.showMessage("Received tap at " + e.getX() + ", " + e.getY(), FontImage.MATERIAL_3D_ROTATION);
    });
    int maxZoom = cnt.getMaxZoom();
    System.out.println("Max zoom is " + maxZoom);
    Button btnMoveCamera = new Button("Move Camera");
    btnMoveCamera.addActionListener(e -> {
        cnt.setCameraPosition(new Coord(-33.867, 151.206));
    });
    Style s = new Style();
    s.setFgColor(0xff0000);
    s.setBgTransparency(0);
    FontImage markerImg = FontImage.createMaterial(FontImage.MATERIAL_PLACE, s, 3);
    Button btnAddMarker = new Button("Add Marker");
    btnAddMarker.addActionListener(e -> {
        cnt.setCameraPosition(new Coord(41.889, -87.622));
        cnt.addMarker(EncodedImage.createFromImage(markerImg, false), cnt.getCameraPosition(), "Hi marker", "Optional long description", new ActionListener() {

            public void actionPerformed(ActionEvent evt) {
                System.out.println("Bounding box is " + cnt.getBoundingBox());
                ToastBar.showMessage("You clicked the marker", FontImage.MATERIAL_PLACE);
            }
        });
    });
    Button btnAddPath = new Button("Add Path");
    btnAddPath.addActionListener(e -> {
        cnt.addPath(cnt.getCameraPosition(), // Sydney
        new Coord(-33.866, 151.195), // Fiji
        new Coord(-18.142, 178.431), // Hawaii
        new Coord(21.291, -157.821), // Mountain View
        new Coord(37.423, -122.091));
    });
    Button panTo = new Button("Pan To");
    panTo.addActionListener(e -> {
        // bounds.extend(new google.maps.LatLng('66.057878', '-22.579047')); // Iceland
        // bounds.extend(new google.maps.LatLng('37.961952', '43.878878')); // Turkey
        Coord c1 = new Coord(49.0986192, -122.6764454);
        Coord c2 = new Coord(49.2577142, -123.1941149);
        // Coord center = new Coord(c1.getLatitude()/2 +  c2.getLatitude() / 2, c1.getLongitude()/2 + c2.getLongitude()/2 );
        Coord center = new Coord(49.1110928, -122.9414646);
        float zoom = cnt.getZoom();
        boolean[] finished = new boolean[1];
        cnt.addMapListener(new MapListener() {

            @Override
            public void mapPositionUpdated(Component source, int zoom, Coord c) {
                if (Math.abs(c.getLatitude() - center.getLatitude()) > .001 || Math.abs(c.getLongitude() - center.getLongitude()) > .001) {
                    return;
                }
                finished[0] = true;
                synchronized (finished) {
                    final MapListener fthis = this;
                    Display.getInstance().callSerially(() -> {
                        cnt.removeMapListener(fthis);
                    });
                    finished.notify();
                }
            }
        });
        cnt.zoom(center, (int) zoom);
        while (!finished[0]) {
            Display.getInstance().invokeAndBlock(() -> {
                while (!finished[0]) {
                    Util.wait(finished, 100);
                }
            });
        }
        BoundingBox box = cnt.getBoundingBox();
        if (!box.contains(c1) || !box.contains(c2)) {
            while (!box.contains(c1) || !box.contains(c2)) {
                if (!box.contains(c1)) {
                    System.out.println("Box " + box + " doesn't contain " + c1);
                }
                if (!box.contains(c1)) {
                    System.out.println("Box " + box + " doesn't contain " + c2);
                }
                zoom -= 1;
                final boolean[] done = new boolean[1];
                final int fzoom = (int) zoom;
                cnt.addMapListener(new MapListener() {

                    @Override
                    public void mapPositionUpdated(Component source, int zm, Coord center) {
                        if (zm == fzoom) {
                            final MapListener fthis = this;
                            Display.getInstance().callSerially(() -> {
                                cnt.removeMapListener(fthis);
                            });
                            done[0] = true;
                            synchronized (done) {
                                done.notify();
                            }
                        }
                    }
                });
                cnt.zoom(center, (int) zoom);
                while (!done[0]) {
                    Display.getInstance().invokeAndBlock(() -> {
                        while (!done[0]) {
                            Util.wait(done, 100);
                        }
                    });
                }
                box = cnt.getBoundingBox();
                System.out.println("Zoom now " + zoom);
            }
        } else if (box.contains(c1) && box.contains(c2)) {
            while (box.contains(c1) && box.contains(c2)) {
                zoom += 1;
                final boolean[] done = new boolean[1];
                final int fzoom = (int) zoom;
                cnt.addMapListener(new MapListener() {

                    public void mapPositionUpdated(Component source, int zm, Coord center) {
                        if (zm == fzoom) {
                            final MapListener fthis = this;
                            Display.getInstance().callSerially(() -> {
                                cnt.removeMapListener(fthis);
                            });
                            done[0] = true;
                            synchronized (done) {
                                done.notify();
                            }
                        }
                    }
                });
                cnt.zoom(center, (int) zoom);
                while (!done[0]) {
                    Display.getInstance().invokeAndBlock(() -> {
                        while (!done[0]) {
                            Util.wait(done, 100);
                        }
                    });
                }
                box = cnt.getBoundingBox();
            }
            zoom -= 1;
            cnt.zoom(center, (int) zoom);
            cnt.addTapListener(null);
        }
    });
    Button testCoordPositions = $(new Button("Test Coords")).addActionListener(e -> {
        Coord topLeft = cnt.getCoordAtPosition(0, 0);
        System.out.println("Top Left is " + topLeft + " -> " + cnt.getScreenCoordinate(topLeft) + " Should be (0,0)");
        Coord bottomRight = cnt.getCoordAtPosition(cnt.getWidth(), cnt.getHeight());
        System.out.println("Bottom right is " + bottomRight + " -> " + cnt.getScreenCoordinate(bottomRight) + " Should be " + cnt.getWidth() + ", " + cnt.getHeight());
        Coord bottomLeft = cnt.getCoordAtPosition(0, cnt.getHeight());
        System.out.println("Bottom Left is " + bottomLeft + " -> " + cnt.getScreenCoordinate(bottomLeft) + " Should be 0, " + cnt.getHeight());
        Coord topRight = cnt.getCoordAtPosition(cnt.getWidth(), 0);
        System.out.println("Top right is " + topRight + " -> " + cnt.getScreenCoordinate(topRight) + " Should be " + cnt.getWidth() + ", 0");
        Coord center = cnt.getCoordAtPosition(cnt.getWidth() / 2, cnt.getHeight() / 2);
        System.out.println("Center is " + center + " -> " + cnt.getScreenCoordinate(center) + ", should be " + (cnt.getWidth() / 2) + ", " + (cnt.getHeight() / 2));
        EncodedImage encImg = EncodedImage.createFromImage(markerImg, false);
        cnt.addMarker(encImg, topLeft, "Top Left", "Top Left", null);
        cnt.addMarker(encImg, topRight, "Top Right", "Top Right", null);
        cnt.addMarker(encImg, bottomRight, "Bottom Right", "Bottom Right", null);
        cnt.addMarker(encImg, bottomLeft, "Bottom Left", "Bottom Left", null);
        cnt.addMarker(encImg, center, "Center", "Center", null);
    }).asComponent(Button.class);
    Button toggleTopMargin = $(new Button("Toggle Margin")).addActionListener(e -> {
        int marginTop = $(cnt).getStyle().getMarginTop();
        if (marginTop < Display.getInstance().getDisplayHeight() / 3) {
            $(cnt).selectAllStyles().setMargin(Display.getInstance().getDisplayHeight() / 3, 0, 0, 0);
        } else {
            $(cnt).selectAllStyles().setMargin(0, 0, 0, 0);
        }
        $(cnt).getComponentForm().revalidate();
    }).asComponent(Button.class);
    Button btnClearAll = new Button("Clear All");
    btnClearAll.addActionListener(e -> {
        cnt.clearMapLayers();
    });
    MapObject mo = cnt.addMarker(EncodedImage.createFromImage(markerImg, false), new Coord(-33.866, 151.195), "test", "test", e -> {
        System.out.println("Marker clicked");
        cnt.removeMapObject(sydney);
    });
    sydney = mo;
    System.out.println("MO is " + mo);
    mo = cnt.addMarker(EncodedImage.createFromImage(markerImg, false), new Coord(-18.142, 178.431), "test", "test", e -> {
        System.out.println("Marker clicked");
    });
    System.out.println("MO is " + mo);
    cnt.addTapListener(e -> {
        if (tapDisabled) {
            return;
        }
        tapDisabled = true;
        TextField enterName = new TextField();
        Container wrapper = BoxLayout.encloseY(new Label("Name:"), enterName);
        InteractionDialog dlg = new InteractionDialog("Add Marker");
        dlg.getContentPane().add(wrapper);
        enterName.setDoneListener(e2 -> {
            String txt = enterName.getText();
            cnt.addMarker(EncodedImage.createFromImage(markerImg, false), cnt.getCoordAtPosition(e.getX(), e.getY()), enterName.getText(), "", e3 -> {
                ToastBar.showMessage("You clicked " + txt, FontImage.MATERIAL_PLACE);
            });
            dlg.dispose();
            tapDisabled = false;
        });
        dlg.showPopupDialog(new Rectangle(e.getX(), e.getY(), 10, 10));
        enterName.startEditingAsync();
    });
    Button showNextForm = $(new Button("Next Form")).addActionListener(e -> {
        Form form = new Form("Hello World");
        Button b1 = $(new Button("B1")).addActionListener(e2 -> {
            ToastBar.showMessage("B1 was pressed", FontImage.MATERIAL_3D_ROTATION);
        }).asComponent(Button.class);
        Button back = $(new Button("Back")).addActionListener(e2 -> {
            hi.showBack();
        }).asComponent(Button.class);
        form.add(b1);
    }).asComponent(Button.class);
    FloatingActionButton nextForm = FloatingActionButton.createFAB(FontImage.MATERIAL_ACCESS_ALARM);
    nextForm.addActionListener(e -> {
        Form form = new Form("Hello World");
        Button b1 = $(new Button("B1")).addActionListener(e2 -> {
            ToastBar.showMessage("B1 was pressed", FontImage.MATERIAL_3D_ROTATION);
        }).asComponent(Button.class);
        Button back = $(new Button("Back")).addActionListener(e2 -> {
            hi.showBack();
        }).asComponent(Button.class);
        form.add(b1).add(back);
        form.show();
    });
    Container root = LayeredLayout.encloseIn(BorderLayout.center(nextForm.bindFabToContainer(cnt)), BorderLayout.south(FlowLayout.encloseBottom(panTo, testCoordPositions, toggleTopMargin, btnMoveCamera, btnAddMarker, btnAddPath, btnClearAll)));
    hi.add(BorderLayout.CENTER, root);
    hi.show();
}
Also used : Util(com.codename1.io.Util) BoxLayout(com.codename1.ui.layouts.BoxLayout) ActionEvent(com.codename1.ui.events.ActionEvent) LayeredLayout(com.codename1.ui.layouts.LayeredLayout) MapObject(com.codename1.googlemaps.MapContainer.MapObject) MapListener(com.codename1.maps.MapListener) Form(com.codename1.ui.Form) Container(com.codename1.ui.Container) BoundingBox(com.codename1.maps.BoundingBox) ComponentSelector.$(com.codename1.ui.ComponentSelector.$) TextField(com.codename1.ui.TextField) Display(com.codename1.ui.Display) FontImage(com.codename1.ui.FontImage) Button(com.codename1.ui.Button) Label(com.codename1.ui.Label) Component(com.codename1.ui.Component) Rectangle(com.codename1.ui.geom.Rectangle) EncodedImage(com.codename1.ui.EncodedImage) MapContainer(com.codename1.googlemaps.MapContainer) FlowLayout(com.codename1.ui.layouts.FlowLayout) Resources(com.codename1.ui.util.Resources) IOException(java.io.IOException) ActionListener(com.codename1.ui.events.ActionListener) BorderLayout(com.codename1.ui.layouts.BorderLayout) Style(com.codename1.ui.plaf.Style) Coord(com.codename1.maps.Coord) UIManager(com.codename1.ui.plaf.UIManager) ToastBar(com.codename1.components.ToastBar) FloatingActionButton(com.codename1.components.FloatingActionButton) SideMenuBar(com.codename1.ui.SideMenuBar) InteractionDialog(com.codename1.components.InteractionDialog) Form(com.codename1.ui.Form) ActionEvent(com.codename1.ui.events.ActionEvent) Label(com.codename1.ui.Label) Rectangle(com.codename1.ui.geom.Rectangle) MapContainer(com.codename1.googlemaps.MapContainer) InteractionDialog(com.codename1.components.InteractionDialog) Container(com.codename1.ui.Container) MapContainer(com.codename1.googlemaps.MapContainer) BorderLayout(com.codename1.ui.layouts.BorderLayout) Button(com.codename1.ui.Button) FloatingActionButton(com.codename1.components.FloatingActionButton) BoundingBox(com.codename1.maps.BoundingBox) Style(com.codename1.ui.plaf.Style) TextField(com.codename1.ui.TextField) FloatingActionButton(com.codename1.components.FloatingActionButton) Component(com.codename1.ui.Component) FontImage(com.codename1.ui.FontImage) MapObject(com.codename1.googlemaps.MapContainer.MapObject) EncodedImage(com.codename1.ui.EncodedImage) Coord(com.codename1.maps.Coord) ActionListener(com.codename1.ui.events.ActionListener) MapListener(com.codename1.maps.MapListener)

Aggregations

EncodedImage (com.codename1.ui.EncodedImage)21 IOException (java.io.IOException)14 ByteArrayOutputStream (java.io.ByteArrayOutputStream)7 Image (com.codename1.ui.Image)6 AnimationObject (com.codename1.ui.animations.AnimationObject)5 BufferedImage (java.awt.image.BufferedImage)5 ByteArrayInputStream (java.io.ByteArrayInputStream)5 File (java.io.File)5 Hashtable (java.util.Hashtable)5 Map (java.util.Map)5 Form (com.codename1.ui.Form)4 ActionListener (com.codename1.ui.events.ActionListener)4 ImageIO (com.codename1.ui.util.ImageIO)4 ConnectionRequest (com.codename1.io.ConnectionRequest)3 ArrayList (java.util.ArrayList)3 InfiniteProgress (com.codename1.components.InfiniteProgress)2 MapObject (com.codename1.googlemaps.MapContainer.MapObject)2 Externalizable (com.codename1.io.Externalizable)2 JSONParser (com.codename1.io.JSONParser)2 Coord (com.codename1.maps.Coord)2