Exemplo n.º 1
0
/*
 * _DisplayCursor - show the current cursor position
 */
void _DisplayCursor( LPWDATA w )
{
    HDC                 dc;
    SIZE                size;

    dc = GetDC( w->hwnd );
    SelectObject( dc, _FixedFont );
    #ifdef _MBCS
        #ifdef __NT__
            GetTextExtentPoint32( dc, w->tmpbuff->data,
                                  FAR_mbsnbcnt( (LPBYTE)w->tmpbuff->data,w->buffoff+w->curr_pos),
                                  &size );
        #else
            GetTextExtentPoint( dc, w->tmpbuff->data,
                                FAR_mbsnbcnt( (LPBYTE)w->tmpbuff->data, w->buffoff + w->curr_pos),
                                &size );
        #endif
    #else
        #ifdef __NT__
            GetTextExtentPoint32( dc, w->tmpbuff->data, w->buffoff+w->curr_pos,
                                  &size );
        #else
            GetTextExtentPoint( dc, w->tmpbuff->data, w->buffoff+w->curr_pos,
                                &size );
        #endif
    #endif
    SetCaretPos( size.cx+1, (w->LastLineNumber-w->TopLineNumber)*w->ychar );
    ReleaseDC( w->hwnd, dc );
    ShowCaret( w->hwnd );

} /* _DisplayCursor */
Exemplo n.º 2
0
/*
 * createNewEntry - build a new line number entry
 */
static LPLDATA createNewEntry( LPWDATA w )
{
    LPLDATA             ld;
#ifdef _MBCS
    LPBYTE              p;

    p = FAR_mbsninc( (LPBYTE)w->tmpbuff->data, w->buffoff );
    *p = '\0';
    ld = _MemAlloc( sizeof( line_data ) + FAR_mbsnbcnt( (LPBYTE)w->tmpbuff->data, w->buffoff ) );
#else
    w->tmpbuff->data[w->buffoff] = 0;
    ld = _MemAlloc( sizeof( line_data ) + w->buffoff );
#endif
    w->buffoff = 0;
    FARstrcpy( ld->data, w->tmpbuff->data );
    if( w->LineTail == NULL ) {
        w->LineHead = w->LineTail = ld;
    } else {
        w->LineTail->next = ld;
        ld->prev = w->LineTail;
        w->LineTail = ld;
    }
    return( ld );

} /* createNewEntry */
Exemplo n.º 3
0
/*
 * _DisplayLineInWindowWithColor - as it sounds!
 */
void _DisplayLineInWindowWithColor( LPWDATA w, int line, LPSTR text, int c1,
                        int c2, int extra, int startcol )
{
  #ifdef _MBCS
    LPBYTE          tmp;
  #else
    LPSTR           tmp;
  #endif
    char            buff[256];
    int             start,end,a,spend,cnt1,cnt2;
    WORD            i;
    HWND            hwnd;

    hwnd = w->hwnd;

    /*** Find dimensions of line ***/
  #ifdef _MBCS
    tmp = FAR_mbsninc( (LPBYTE)text, startcol );
    a = FAR_mbslen( tmp );
    if( line < 1 || line >= w->height )
        return;
    start = 0;
    spend = end = w->width - extra;
    if( end > a )
        end = a;
    cnt1 = FAR_mbsnbcnt( tmp, end - start );
    cnt2 = spend - end;
    FAR_mbsnbcpy( (LPBYTE)buff, tmp, cnt1 - start );
    FARmemset( buff + cnt1, ' ', cnt2 );
    tmp = FAR_mbsninc( (LPBYTE)buff, cnt1 + cnt2 );
    *tmp = '\0';
  #else
    tmp = text;
    tmp += startcol;
    a = FARstrlen( tmp );
    if( line < 1 || line >= w->height )
        return;
    start = 0;
    spend = end = w->width - extra;
    if( end > a )
        end = a;
    cnt1 = end - start;
    cnt2 = spend - end;
    FARmemcpy( buff, tmp, cnt1 );
    FARmemset( buff + cnt1, ' ', cnt2 );
    buff[cnt1 + cnt2] = 0;
  #endif
    line--;

#if defined( __OS2__ )
    {
        RECTL           rcl;
        HPS             ps;
        POINTL          ptl;
        POINTL          points[TXTBOX_COUNT];

        ptl.x = 0;
        ptl.y = (w->y2 - w->y1) - (line+1)*w->ychar + w->base_offset;
        ps = WinGetPS( hwnd );
        _SelectFont( ps );
        GpiQueryTextBox( ps, startcol, w->tmpbuff->data, TXTBOX_COUNT, points );
        rcl.xLeft = points[TXTBOX_BOTTOMRIGHT].x;
    #ifdef _MBCS
        GpiQueryTextBox( ps, __mbslen( (unsigned char *)buff ), buff, TXTBOX_COUNT, points );
    #else
        GpiQueryTextBox( ps, strlen( buff ), buff, TXTBOX_COUNT, points );
    #endif
        rcl.xRight = points[TXTBOX_BOTTOMRIGHT].x;
        rcl.yTop = (w->y2 - w->y1) - line*w->ychar;
        rcl.yBottom = rcl.yTop - w->ychar;
        WinFillRect( ps, &rcl, c1 );
        GpiSetColor( ps, c2 );
    #ifdef _MBCS
        GpiCharStringAt( ps, &ptl, _mbsnbcnt(buff,w->width), buff );
    #else
        GpiCharStringAt( ps, &ptl, w->width, buff );
    #endif
        WinReleasePS( ps );
    }
#else
    {
        HDC     dc;
//      SIZE    size;
//      RECT    rect;

        dc = GetDC( hwnd );
        _SetMyDC( dc, _ColorMap[c2], _ColorMap[c1] );
//      #ifdef __NT__
//          GetTextExtentPoint32( dc, buff, strlen(buff), &size );
//      #else
//          GetTextExtentPoint( dc, buff, strlen(buff), &size );
//      #endif
//
    #ifdef _MBCS
        TextOut( dc, 0, line * w->ychar, (LPSTR)buff, FAR_mbsnbcnt( (LPBYTE)buff, w->width ) );
    #else
        TextOut( dc, 0, line * w->ychar, buff, w->width );
    #endif

        /*** Clear to end of line to remove any residue ***/
//      GetClientRect( w->hwnd, &rect );
//      rect.top = line * w->ychar;
//      rect.bottom = (line+1) * w->ychar ;
//      rect.left = size.cx;
//      FillRect( dc, &rect, w->brush );
        ReleaseDC( hwnd, dc );
    }
#endif

    /*** Update the w->image array ***/
#ifdef _MBCS
    {
        mb_char         mbc;
        unsigned char   *curMbc;
        int             count;

        i = line * w->width + startcol;
        for( count = 0, curMbc = (unsigned char *)buff; count < w->width - startcol; count++ ) {
            mbc = _mbsnextc( curMbc );          /* get the character */
            curMbc = _mbsinc( curMbc );         /* point to next char */
            w->image[i + count] = mbc;          /* store it in w->image */
        }
    }
#else
    i = line * w->width + startcol;
    FARmemcpy( &w->image[i], buff, w->width - startcol );
#endif
} /* _DisplayLineInWindowWithColor */
Exemplo n.º 4
0
void _RepaintWindow( LPWDATA w, PRECT rcPaint, HDC ph )
#endif
{
    WORD                i;
    WORD                ptop, pbot, pleft, pright, poff, pdown;
    WORD                width;
#ifdef _MBCS
    mb_char _WCI86FAR   *image;
    unsigned char       mbc[MB_CUR_MAX + 1];
#else
    LPSTR               image;
#endif
#if !defined( __OS2__ )
    HFONT               oldfont;
#endif

    /*
     * get area to redraw
     */
    ptop = rcPaint->top / w->ychar;
    if( ptop > 0 && ( rcPaint->top % w->ychar ) != 0 )
        ptop--;
    pbot = rcPaint->bottom / w->ychar ;
    if( pbot == 0 )
        return;
    if( pbot >= w->height )
        pbot = w->height - 1;
    if( ( rcPaint->bottom % w->ychar ) == 0 )
        pbot--;
    pleft = 0;
    pright = w->width - 1;
    width = w->width;
    poff = pleft * w->xchar;
    pdown = ptop * w->ychar;

    /*
     * draw all lines
     */
#if defined( __OS2__ )
#else
    oldfont = SelectObject( (HDC)ph, _FixedFont );
#endif
    for( i = ptop; i <= pbot; i++ ) {
        image = &w->image[i * w->width];
#if defined( __OS2__ )
        {
            POINTL      ptl;

            ptl.x = poff;
            ptl.y = ( w->y2 - w->y1 ) - ( pdown + w->ychar ) + w->base_offset;
    #ifdef _MBCS
            {
                WORD        count;
                LPSTR       buff;

                buff = FARmalloc( sizeof( mb_char ) * ( width + 1 ) );
                if( buff == NULL )
                    _OutOfMemoryExit();
                *buff = '\0';
                for( count = 0; count < width; count++ ) {
                    _mbvtop( image[pleft + count], mbc );
                    mbc[_mbclen( mbc )] = '\0';
                    FARstrcat( buff, (char *)mbc );
                }
                GpiCharStringAt( (HPS)ph, &ptl, FAR_mbsnbcnt( (PBYTE)buff, width ), buff );
                FARfree( buff );
            }
    #else
            GpiCharStringAt( (HPS)ph, &ptl, width, &image[pleft] );
    #endif
        }
#else
        SetBkColor( (HDC)ph, _ColorMap[w->background_color] );
        SetTextColor( (HDC)ph, _ColorMap[w->text_color] );
    #ifdef _MBCS
        {
            WORD        count;
            size_t      bytes;
            LPSTR       buff;

            buff = FARmalloc( sizeof( mb_char ) * ( width + 1 ) );
            if( buff == NULL )
                _OutOfMemoryExit();
            *buff = '\0';
            for( count = 0; count < width; count++ ) {
                _mbvtop( image[pleft + count], mbc );
                mbc[_mbclen( mbc )] = '\0';
                FARstrcat( buff, (LPSTR)mbc );
            }
            bytes = FARstrlen( buff );
            TextOut( (HDC)ph, poff, pdown, buff, bytes );
            FARfree( buff );
        }
    #else
        TextOut( (HDC)ph, poff, pdown, &image[pleft], width );
    #endif
#endif
        pdown += w->ychar;
    }
#if !defined( __OS2__ )
    SelectObject( (HDC)ph, oldfont );
#endif

} /* _RepaintWindow */