63 lines
1.1 KiB
C
63 lines
1.1 KiB
C
#ifndef __BLITTER_H__
|
|
#define __BLITTER_H__
|
|
|
|
#include "types.h"
|
|
#include "screen.h"
|
|
|
|
#define WORD_ALIGNED_BYTE_POSITION(width, x, y) (((width * y + x) >> 3) & 0xfffe)
|
|
|
|
struct BlitAreaDetails {
|
|
unsigned char *target;
|
|
uint16_t drawAreaWidth;
|
|
uint16_t nextBitplaneAdvance;
|
|
uint8_t contiguousBitplanes;
|
|
};
|
|
|
|
struct BlitDrawLineSetup {
|
|
uint16_t linePattern;
|
|
unsigned char *target;
|
|
|
|
int dx, dy, sx;
|
|
int sud, sul, aul, accumulator, sign;
|
|
};
|
|
|
|
void blit_fillAreaDetailsFromScreenSetup(
|
|
struct ScreenSetup *screenSetup,
|
|
struct BlitAreaDetails *blitAreaDetails
|
|
);
|
|
|
|
void blit_calculateLineBlit(
|
|
struct BlitDrawLineSetup *setup,
|
|
uint16_t sx,
|
|
uint16_t sy,
|
|
uint16_t ex,
|
|
uint16_t ey
|
|
);
|
|
|
|
void blit_drawLine(
|
|
struct BlitAreaDetails *blitAreaDetails,
|
|
struct BlitDrawLineSetup *setup,
|
|
uint16_t sx,
|
|
uint16_t sy,
|
|
uint16_t ex,
|
|
uint16_t ey,
|
|
uint8_t color
|
|
);
|
|
|
|
void blit_copyOneToOne(
|
|
struct BlitAreaDetails *source,
|
|
struct BlitAreaDetails *target,
|
|
uint16_t sx,
|
|
uint16_t sy,
|
|
uint16_t ex,
|
|
uint16_t ey,
|
|
uint16_t tx,
|
|
uint16_t ty
|
|
);
|
|
|
|
void blit_howDoesFWMandLWMWork(
|
|
struct BlitAreaDetails *target
|
|
);
|
|
|
|
#endif
|