void showInfo(Graphics2D g, Subject s) {


        final int x = 320;
        final int y = 560;

        g.setColor(shadow);
        g.fillRect(0, y, 1200, 160);

        g.setColor(border);
        g.drawLine(0, y, 1200, y);


        drawer.setStyle(mainFont);

        if (s != null) {
            Meta meta = s.meta;


            if (s.meta.image != null) {
                BufferedImage bimg;

                ImageObserver io = new ImageObserver() {
                    @Override
                    public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
                        return false;
                    }
                };

                try {
                    final int base = 128;
                    bimg = ImageIO.read(meta.image);
                    int width = base;
                    int left;

                    if (bimg.getWidth() > bimg.getHeight()) {
                        double scale = bimg.getWidth() * 1.0 / bimg.getHeight();
                        width = (int) (base * scale);
                        left = (int) (160 - width / 2.0f);
                    } else {
                        left = 160 - base / 2;
                    }

                    g.drawImage(bimg, left, 540, width, base, io);

                } catch (IOException e) {
                    e.printStackTrace();
                }

                g.drawString(String.format("Name ................ %s", meta.name), x, y + 20);
                g.drawString(String.format("Type ................. %s", meta.type), x, y + 35);
                g.drawString(String.format("Period .............. %dd", meta.period), x, y + 50);
                g.drawString(String.format("Turns .............. %d ", s.cnt), x, y + 65);
                g.drawString(String.format("Angle ............... %1.6f ", s.p.angle), x, y + 80);

            }

        }

        g.drawString(String.format("Since ............. %3.1f days", since / BASE_TIME_SPEED), x + 200, y + 20);


        if (debug) {
            drawer.setStyle(miniFont);
            g.setColor(debugFont);
            g.drawString(String.format("Thread time: % 2d", System.currentTimeMillis() - time), 400, 15);
            g.drawString(String.format(" ms; Seconds:  %2.3f", (time - START_TIME) / 1000.0), 500, 15);
            g.drawString(String.format("%2.1f days/second", TIME_SPEED / 86_400), 650, 15);
            g.drawString(String.format("%2.1f FPS", 1 / RATE), 780, 15);
            drawer.setStyle(mainFont);
        }
    }