Logo Search packages:      
Sourcecode: wine-unstable version File versions  Download package

winecon_private.h

/*
 * an application for displaying Win32 console
 *
 * Copyright 2001 Eric Pouech
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <wincon.h>

#include "wineconsole_res.h"

/* this is the configuration stored & loaded into the registry */
struct config_data {
    unsigned      cell_width; /* width in pixels of a character */
    unsigned      cell_height;      /* height in pixels of a character */
    int           cursor_size;      /* in % of cell height */
    int           cursor_visible;
    DWORD       def_attr;
    WCHAR       face_name[32];  /* name of font (size is LF_FACESIZE) */
    DWORD       font_weight;
    DWORD       history_size;   /* number of commands in history buffer */
    DWORD       history_nodup;  /* TRUE if commands are not stored twice in buffer */
    DWORD       menu_mask;      /* MK_CONTROL MK_SHIFT mask to drive submenu opening */
    DWORD       quick_edit;     /* whether mouse ops are sent to app (false) or used for content selection (true) */
    unsigned      sb_width;   /* active screen buffer width */
    unsigned      sb_height;  /* active screen buffer height */
    unsigned      win_width;  /* size (in cells) of visible part of window (width & height) */
    unsigned      win_height;
    COORD   win_pos;    /* position (in cells) of visible part of screen buffer in window */
    BOOL        exit_on_die;    /* whether the wineconsole should quit if server destroys the console */
    unsigned    edition_mode;   /* edition mode flavor while line editing */
    WCHAR*      registry;       /* <x> part of HKLU\<x>\\Console where config is read from (NULL if default settings) */
};

struct inner_data {
    struct config_data  curcfg;

    CHAR_INFO*          cells;            /* local copy of cells (sb_width * sb_height) */

    COORD         cursor;           /* position in cells of cursor */

    HANDLE        hConIn;           /* console input handle */
    HANDLE        hConOut;    /* screen buffer handle: has to be changed when active sb changes */
    HANDLE        hSynchro;   /* waitable handle signalled by server when something in server has been modified */
    HWND          hWnd;           /* handle of 'user' window or NULL for 'curses' */
    INT                 nCmdShow;       /* argument of WinMain */

    int                 (*fnMainLoop)(struct inner_data* data);
    void          (*fnPosCursor)(const struct inner_data* data);
    void          (*fnShapeCursor)(struct inner_data* data, int size, int vis, BOOL force);
    void          (*fnComputePositions)(struct inner_data* data);
    void          (*fnRefresh)(const struct inner_data* data, int tp, int bm);
    void          (*fnResizeScreenBuffer)(struct inner_data* data);
    void          (*fnSetTitle)(const struct inner_data* data);
    void          (*fnScroll)(struct inner_data* data, int pos, BOOL horz);
    void                (*fnSetFont)(struct inner_data* data, const WCHAR* font, unsigned height, unsigned weight);
    void          (*fnDeleteBackend)(struct inner_data* data);

    void*               private;        /* data part belonging to the choosen backed */
};

/* from wineconsole.c */
extern void WINECON_Fatal(const char* msg);
extern void WINECON_NotifyWindowChange(struct inner_data* data);
extern int  WINECON_GetHistorySize(HANDLE hConIn);
extern int  WINECON_GetHistoryMode(HANDLE hConIn);
extern BOOL WINECON_GetConsoleTitle(HANDLE hConIn, WCHAR* buffer, size_t len);
extern int  WINECON_GrabChanges(struct inner_data* data);
extern VOID WINECON_SetConfig(struct inner_data* data,
                              const struct config_data* cfg);
/* from registry.c */
extern void WINECON_RegLoad(const WCHAR* appname, struct config_data* cfg);
extern void WINECON_RegSave(const struct config_data* cfg);
extern void WINECON_DumpConfig(const char* pfx, const struct config_data* cfg);

/* backends... */
enum init_return {
    init_success, init_failed, init_not_supported
};
extern enum init_return WCUSER_InitBackend(struct inner_data* data);
extern enum init_return WCCURSES_InitBackend(struct inner_data* data);

Generated by  Doxygen 1.6.0   Back to index