mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-03-13 10:20:59 -07:00
* .gitignore: Update with new files. Do not ignore std*.in.h. * INSTALL.android: Explain how to build Emacs with external dependencies. * Makefile.in (xcompile, cross): Rename to `cross'. (clean_dirs): Clean cross, not xcompile. * README: Document new directories. * build-aux/ndk-build-helper-1.mk (build_kind, NDK_SO_NAMES): * build-aux/ndk-build-helper-2.mk (build_kind, NDK_SO_NAMES): * build-aux/ndk-build-helper-3.mk (build_kind): * build-aux/ndk-build-helper-4.mk: * build-aux/ndk-build-helper.mk (NDK_BUILD_DIR, my-dir): * build-aux/ndk-module-extract.awk: New files. * configure.ac: Set up libgif, libwebp, and libpng for ndk-build. * cross/ndk-build/Makefile.in (srcdir, NDK_BUILD_ANDROID_MK): * cross/ndk-build/ndk-build-executable.mk: * cross/ndk-build/ndk-build-shared-library.mk (eq, objname): * cross/ndk-build/ndk-build-static-library.mk (eq, objname): * cross/ndk-build/ndk-build.in (NDK_BUILD_MODULES): * cross/ndk-build/ndk-build.mk.in (NDK_BUILD_MODULES) (NDK_BUILD_SHARED): * cross/ndk-build/ndk-clear-vars.mk: * cross/ndk-build/ndk-prebuilt-shared-library.mk: * cross/ndk-build/ndk-prebuilt-static-library.mk: New files. * doc/emacs/android.texi (Android, Android Environment): Document clipboard support on Android. * doc/emacs/emacs.texi (Top): Update menus. * etc/MACHINES: Document Android. * java/AndroidManifest.xml.in: Respect new `--with-android-debug' option. * java/Makefile.in (CROSS_BINS, CROSS_LIBS): Adjust for rename. Include ndk-build.mk.:(emacs.apk-in): Depend on shared libraries. Then, package shared libraries. * java/org/gnu/emacs/EmacsClipboard.java (EmacsClipboard): New class. * java/org/gnu/emacs/EmacsFontDriver.java: Update comment to say this is unused. * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New function `sendExpose'. * java/org/gnu/emacs/EmacsSdk11Clipboard.java (EmacsSdk11Clipboard): * java/org/gnu/emacs/EmacsSdk8Clipboard.java (EmacsSdk8Clipboard): New classes. * java/org/gnu/emacs/EmacsView.java (EmacsView, handleDirtyBitmap) (onDetachedFromWindow): When window is reattached, expose the frame. * lib/Makefile.in (VPATH): (ALL_CFLAGS): Adjust for rename. * lisp/term/android-win.el (android-clipboard-exists-p) (android-get-clipboard, android-set-clipboard) (android-clipboard-owner-p, android-primary-selection) (android-get-clipboard-1, android-get-primary) (android-selection-bounds, android-encode-select-string) (gui-backend-get-selection, gui-backend-selection-exists-p) (gui-backend-selection-owner-p, gui-backend-set-selection): New functions. * m4/ndk-build.m4: New file. * src/Makefile.in (GIF_CFLAGS, ANDROID_LDFLAGS): New variables. (EMACS_CFLAGS): Add GIF_CFLAGS. Include ndk-build.mk. (libemacs.so): Depend on and link with required libraries. * src/android.c (android_check_compressed_file): New function. (android_open): Work around Android platform bug. (sendExpose): New function. (android_readdir): Set d_type if this is a directory. * src/androidgui.h (enum android_event_type) (struct android_expose_event, union android_event): Add expose events. * src/androidselect.c (struct android_emacs_clipboard) (android_init_emacs_clipboard, Fandroid_clipboard_owner_p) (Fandroid_set_clipboard, Fandroid_get_clipboard) (Fandroid_clipboard_exists_p, init_androidselect) (syms_of_androidselect): New file. * src/androidterm.c (handle_one_android_event): Handle exposures. * src/androidterm.h: Update prototypes. * src/emacs.c (android_emacs_init): Initialize androidselect.
175 lines
5 KiB
Java
175 lines
5 KiB
Java
/* Font backend for Android terminals. -*- c-file-style: "GNU" -*-
|
|
|
|
Copyright (C) 2023 Free Software Foundation, Inc.
|
|
|
|
This file is part of GNU Emacs.
|
|
|
|
GNU Emacs is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or (at
|
|
your option) any later version.
|
|
|
|
GNU Emacs is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
|
|
|
package org.gnu.emacs;
|
|
|
|
import java.util.List;
|
|
|
|
import android.os.Build;
|
|
|
|
/* This code is mostly unused. See sfntfont-android.c for the code
|
|
that is actually used. */
|
|
|
|
public abstract class EmacsFontDriver
|
|
{
|
|
/* Font weights. */
|
|
public static final int THIN = 0;
|
|
public static final int ULTRA_LIGHT = 40;
|
|
public static final int LIGHT = 50;
|
|
public static final int SEMI_LIGHT = 55;
|
|
public static final int REGULAR = 80;
|
|
public static final int MEDIUM = 100;
|
|
public static final int SEMI_BOLD = 180;
|
|
public static final int BOLD = 200;
|
|
public static final int EXTRA_BOLD = 205;
|
|
public static final int BLACK = 210;
|
|
public static final int ULTRA_HEAVY = 250;
|
|
|
|
/* Font slants. */
|
|
public static final int REVERSE_OBLIQUE = 0;
|
|
public static final int REVERSE_ITALIC = 10;
|
|
public static final int NORMAL = 100;
|
|
public static final int ITALIC = 200;
|
|
public static final int OBLIQUE = 210;
|
|
|
|
/* Font widths. */
|
|
public static final int ULTRA_CONDENSED = 50;
|
|
public static final int EXTRA_CONDENSED = 63;
|
|
public static final int CONDENSED = 75;
|
|
public static final int SEMI_CONDENSED = 87;
|
|
public static final int UNSPECIFIED = 100;
|
|
public static final int SEMI_EXPANDED = 113;
|
|
public static final int EXPANDED = 125;
|
|
public static final int EXTRA_EXPANDED = 150;
|
|
public static final int ULTRA_EXPANDED = 200;
|
|
|
|
/* Font spacings. */
|
|
public static final int PROPORTIONAL = 0;
|
|
public static final int DUAL = 90;
|
|
public static final int MONO = 100;
|
|
public static final int CHARCELL = 110;
|
|
|
|
public class FontSpec
|
|
{
|
|
/* The fields below mean the same as they do in enum
|
|
font_property_index in font.h. */
|
|
|
|
public String foundry;
|
|
public String family;
|
|
public String adstyle;
|
|
public String registry;
|
|
public Integer width;
|
|
public Integer weight;
|
|
public Integer slant;
|
|
public Integer size;
|
|
public Integer spacing;
|
|
public Integer avgwidth;
|
|
public Integer dpi;
|
|
|
|
@Override
|
|
public String
|
|
toString ()
|
|
{
|
|
return ("foundry: " + foundry
|
|
+ " family: " + family
|
|
+ " adstyle: " + adstyle
|
|
+ " registry: " + registry
|
|
+ " width: " + width
|
|
+ " weight: " + weight
|
|
+ " slant: " + slant
|
|
+ " spacing: " + spacing
|
|
+ " avgwidth: " + avgwidth
|
|
+ " dpi: " + dpi);
|
|
}
|
|
};
|
|
|
|
public class FontMetrics
|
|
{
|
|
public short lbearing;
|
|
public short rbearing;
|
|
public short width;
|
|
public short ascent;
|
|
public short descent;
|
|
|
|
@Override
|
|
public String
|
|
toString ()
|
|
{
|
|
return ("lbearing " + lbearing
|
|
+ " rbearing " + rbearing
|
|
+ " width " + width
|
|
+ " ascent " + ascent
|
|
+ " descent " + descent);
|
|
}
|
|
}
|
|
|
|
public class FontEntity extends FontSpec
|
|
{
|
|
/* No extra fields here. */
|
|
};
|
|
|
|
public abstract class FontObject extends FontSpec
|
|
{
|
|
public int minWidth;
|
|
public int maxWidth;
|
|
public int pixelSize;
|
|
public int height;
|
|
public int spaceWidth;
|
|
public int averageWidth;
|
|
public int ascent;
|
|
public int descent;
|
|
public int underlineThickness;
|
|
public int underlinePosition;
|
|
public int baselineOffset;
|
|
public int relativeCompose;
|
|
public int defaultAscent;
|
|
public int encodingCharset;
|
|
public int repertoryCharset;
|
|
|
|
public
|
|
FontObject ()
|
|
{
|
|
encodingCharset = -1;
|
|
repertoryCharset = -1;
|
|
}
|
|
};
|
|
|
|
/* These mean the same as they do in struct font_driver. */
|
|
public abstract FontEntity[] list (FontSpec fontSpec);
|
|
public abstract FontEntity match (FontSpec fontSpec);
|
|
public abstract String[] listFamilies ();
|
|
public abstract FontObject openFont (FontEntity fontEntity, int pixelSize);
|
|
public abstract int hasChar (FontSpec font, char charCode);
|
|
public abstract void textExtents (FontObject font, int code[],
|
|
FontMetrics fontMetrics);
|
|
public abstract int encodeChar (FontObject fontObject, char charCode);
|
|
public abstract int draw (FontObject fontObject, EmacsGC gc,
|
|
EmacsDrawable drawable, int[] chars,
|
|
int x, int y, int backgroundWidth,
|
|
boolean withBackground);
|
|
|
|
public static EmacsFontDriver
|
|
createFontDriver ()
|
|
{
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
|
|
return new EmacsSdk23FontDriver ();
|
|
|
|
return new EmacsSdk7FontDriver ();
|
|
}
|
|
};
|