vrust 0.0.1

VRust game engine
#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
extern crate libc;
use self::libc::{c_char, c_int, c_void};
use super::jni::{jobject, JNIEnv, JavaVM};
use super::asset::AAssetManager;
use super::rect::ARect;
use super::input::AInputQueue;
use super::window::ANativeWindow;

#[repr(C)]
#[derive(Copy, Clone, Debug)]
pub struct ANativeActivity {
    pub callbacks: *mut ANativeActivityCallbacks,
    pub vm: *mut JavaVM,
    pub env: *mut JNIEnv,
    pub class: jobject,
    pub internalDataPath: *const c_char,
    pub externalDataPath: *const c_char,
    pub sdkVersion: i32,
    pub instance: *mut c_void,
    pub assetManager: *mut AAssetManager,
    pub obbPath: *const c_char,
}

type activity_receiver = unsafe extern "C" fn(activity: *mut ANativeActivity);
type activity_size_receiver = unsafe extern "C" fn(
    activity: *mut ANativeActivity,
    size: *mut usize,
) -> *mut c_void;
type activity_int_receiver = unsafe extern "C" fn(activity: *mut ANativeActivity, hasFocus: c_int);
type activity_window_receiver = unsafe extern "C" fn(
    activity: *mut ANativeActivity,
    window: *mut ANativeWindow,
);
type activity_input_receiver = unsafe extern "C" fn(
    activity: *mut ANativeActivity,
    queue: *mut AInputQueue,
);
type activity_rect_receiver = unsafe extern "C" fn(
    activity: *mut ANativeActivity,
    rect: *const ARect,
);

#[repr(C)]
#[derive(Copy, Clone, Debug)]
pub struct ANativeActivityCallbacks {
    pub onStart: activity_receiver,
    pub onResume: activity_receiver,
    pub onSaveInstanceState: activity_size_receiver,
    pub onPause: activity_receiver,
    pub onStop: activity_receiver,
    pub onDestroy: activity_receiver,
    pub onWindowFocusChanged: activity_int_receiver,
    pub onNativeWindowCreated: activity_window_receiver,
    pub onNativeWindowResized: activity_window_receiver,
    pub onNativeWindowRedrawNeeded: activity_window_receiver,
    pub onNativeWindowDestroyed: activity_window_receiver,
    pub onInputQueueCreated: activity_input_receiver,
    pub onInputQueueDestroyed: activity_input_receiver,
    pub onContentRectChanged: activity_rect_receiver,
    pub onConfigurationChanged: activity_receiver,
    pub onLowMemory: activity_receiver,
}

#[cfg_attr(target_os = "android", link(name = "android", kind = "dylib"))]
extern "C" {
    pub fn ANativeActivity_finish(activity: *mut ANativeActivity);
    pub fn ANativeActivity_setWindowFormat(activity: *mut ANativeActivity, format: i32);
    pub fn ANativeActivity_setWindowFlags(
        activity: *mut ANativeActivity,
        addFlags: u32,
        removeFlags: u32,
    );
    pub fn ANativeActivity_showSoftInput(activity: *mut ANativeActivity, flags: u32);
    pub fn ANativeActivity_hideSoftInput(activity: *mut ANativeActivity, flags: u32);
}

#[repr(u32)]
#[derive(Debug, Copy, Clone)]
pub enum ShowSoftInputFlagBits {
    IMPLICIT = 0x0001,
    FORCED = 0x0002,
}

#[repr(u32)]
#[derive(Debug, Copy, Clone)]
pub enum HideSoftInputFlagBits {
    IMPLICIT_ONLY = 0x0001,
    NOT_ALWAYS = 0x0002,
}