52 lines
1.5 KiB
C++
52 lines
1.5 KiB
C++
#include <stdio.h>
|
|
#include <midiapp/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(*(numberString+1));
|
|
thirdOffset=charPosition(*(numberString+2));
|
|
fourthOffset=charPosition(*(numberString+3));
|
|
}
|
|
}
|
|
|