52 lines
1.6 KiB
C++
52 lines
1.6 KiB
C++
#include <stdio.h>
|
||
#include <midiwrt/led.hpp>
|
||
|
||
void LedDisplay::paint(void)
|
||
{
|
||
HBITMAP hOldBitmap;
|
||
HDC hDisplayDC;
|
||
HDC hMemDC;
|
||
WORD firstOffset;
|
||
WORD secondOffset;
|
||
WORD thirdOffset;
|
||
WORD fourthOffset;
|
||
|
||
hDisplayDC=::GetDC(mhDisplayWindow);
|
||
hMemDC=::CreateCompatibleDC(hDisplayDC);
|
||
hOldBitmap=(HBITMAP)::SelectObject(hMemDC,mhFilm);
|
||
positions(firstOffset,secondOffset,thirdOffset,fourthOffset);
|
||
::BitBlt(hDisplayDC,mWindowPoint.x(),mWindowPoint.y(),Width,Height,
|
||
hMemDC,0,firstOffset*Height,SRCCOPY);
|
||
::BitBlt(hDisplayDC,mWindowPoint.x()+Width,mWindowPoint.y(),Width,Height,
|
||
hMemDC,0,secondOffset*Height,SRCCOPY);
|
||
::BitBlt(hDisplayDC,mWindowPoint.x()+(Width*2),mWindowPoint.y(),Width,Height,
|
||
hMemDC,0,thirdOffset*Height,SRCCOPY);
|
||
::BitBlt(hDisplayDC,mWindowPoint.x()+(Width*3),mWindowPoint.y(),Width,Height,
|
||
hMemDC,0,fourthOffset*Height,SRCCOPY);
|
||
::SelectObject(hMemDC,hOldBitmap);
|
||
::DeleteObject(hMemDC);
|
||
::ReleaseDC(mhDisplayWindow,hDisplayDC);
|
||
}
|
||
|
||
void LedDisplay::positions(WORD &firstOffset,WORD &secondOffset,WORD &thirdOffset,WORD &fourthOffset)const
|
||
{
|
||
String numberString;
|
||
|
||
if(mHasSpecialChar)
|
||
{
|
||
if(BlankChar==mCurrentSpecialChar)
|
||
firstOffset=secondOffset=thirdOffset=fourthOffset=OffsetBlankChar;
|
||
else
|
||
firstOffset=secondOffset=thirdOffset=fourthOffset=OffsetDashChar;
|
||
}
|
||
else
|
||
{
|
||
::sprintf(numberString,"%04d",mCurrentNumber);
|
||
firstOffset=charPosition(*(numberString));
|
||
secondOffset=charPosition(*((char*)numberString+1));
|
||
thirdOffset=charPosition(*((char*)numberString+2));
|
||
fourthOffset=charPosition(*((char*)numberString+3));
|
||
}
|
||
}
|
||
|
||
|