wndrect.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 96 行

C
96
字号
/****************************************************************************
*
*                            Open Watcom Project
*
*    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
*  ========================================================================
*
*    This file contains Original Code and/or Modifications of Original
*    Code as defined in and that are subject to the Sybase Open Watcom
*    Public License version 1.0 (the 'License'). You may not use this file
*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
*    provided with the Original Code and Modifications, and is also
*    available at www.sybase.com/developer/opensource.
*
*    The Original Code and all software distributed under the License are
*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
*    NON-INFRINGEMENT. Please see the License for the specific language
*    governing rights and limitations under the License.
*
*  ========================================================================
*
* Description:  WHEN YOU FIGURE OUT WHAT THIS MODULE DOES, PLEASE
*               DESCRIBE IT HERE!
*
****************************************************************************/


#include "auipvt.h"

static void RoundToPixel( gui_coord *new, gui_coord *pixel_size )
{
    gui_coord   old;

    old = *new;
    GUITruncToPixel( new );
    if( old.x - new->x >= pixel_size->x / 2 ) new->x += pixel_size->x;
    if( old.y - new->y >= pixel_size->y / 2 ) new->y += pixel_size->y;
}


static void RoundRect( gui_rect *rect )
{
    gui_coord   pixel_size;
    gui_coord   tmp;
    gui_coord   top_left;
    gui_coord   bot_rite;

    pixel_size.x = WndMax.x;
    pixel_size.y = WndMax.y;
    GUITruncToPixel( &pixel_size );
    tmp.x = pixel_size.x - 1;
    tmp.y = pixel_size.y - 1;
    GUITruncToPixel( &tmp );
    pixel_size.x -= tmp.x;
    pixel_size.y -= tmp.y;

    top_left.x = rect->x;
    top_left.y = rect->y;
    RoundToPixel( &top_left, &pixel_size );

    bot_rite.x = rect->x + rect->width;
    bot_rite.y = rect->y + rect->height;
    RoundToPixel( &bot_rite, &pixel_size );

    rect->x = top_left.x;
    rect->y = top_left.y;
    rect->width = bot_rite.x - top_left.x;
    rect->height = bot_rite.y - top_left.y;
}


extern void WndPosToRect( wnd_posn *posn, gui_rect *rect, gui_coord *scale )
{

    rect->x = posn->x * scale->x;
    rect->y = posn->y * scale->y;
    rect->width = posn->width * scale->x;
    rect->height = posn->height * scale->y;
    RoundRect( rect );
}

extern void WndRectToPos( gui_rect *rect, wnd_posn *posn, gui_coord *scale )
{

    posn->x = (float)rect->x / scale->x;
    posn->y = (float)rect->y / scale->y;
    posn->width = (float)rect->width / scale->x;
    posn->height = (float)rect->height / scale->y;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?