Updates to the unix sample app.
Rather than placing pixels, use XPutImage to place the bitmap on screen. Modify the color arrangements for 8888 when building the sample app, so they agree with X. Add a title to simple sample. Include SkTouchGesture. git-svn-id: http://skia.googlecode.com/svn/trunk@963 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
3f0dcf96c3
commit
b66365f5dd
3
Makefile
3
Makefile
@ -106,6 +106,9 @@ else
|
||||
LINKER_OPTS += -lpng -lfreetype -lGL
|
||||
DEFINES += -DSK_BUILD_FOR_UNIX -DSK_ENABLE_LIBPNG -DGR_LINUX_BUILD=1
|
||||
|
||||
ifeq ($(SKIA_SAMPLES_FOR_X),true)
|
||||
DEFINES += -DSK_SAMPLES_FOR_X
|
||||
endif
|
||||
# needed for freetype support
|
||||
C_INCLUDES += -I/usr/include/freetype2
|
||||
SRC_LIST += src/ports/SkFontHost_linux.cpp
|
||||
|
@ -141,5 +141,14 @@
|
||||
//#define SK_SUPPORT_UNITTEST
|
||||
#endif
|
||||
|
||||
/* Change the ordering to work in X windows.
|
||||
*/
|
||||
#ifdef SK_SAMPLES_FOR_X
|
||||
#define SK_R32_SHIFT 16
|
||||
#define SK_G32_SHIFT 8
|
||||
#define SK_B32_SHIFT 0
|
||||
#define SK_A32_SHIFT 24
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -72,14 +72,24 @@ void SkOSWindow::doPaint() {
|
||||
if (!fUnixWindow.fDisplay) return;
|
||||
// Draw the bitmap to the screen.
|
||||
const SkBitmap& bitmap = getBitmap();
|
||||
for (int i = 0; i < bitmap.width(); i++) {
|
||||
for (int j = 0; j < bitmap.height(); j++) {
|
||||
// Get the pixel, put it on the screen.
|
||||
SkColor color = bitmap.getColor(i, j);
|
||||
XSetForeground(fUnixWindow.fDisplay, fUnixWindow.fGc, color);
|
||||
XDrawPoint(fUnixWindow.fDisplay, fUnixWindow.fWin, fUnixWindow.fGc, i, j);
|
||||
}
|
||||
}
|
||||
|
||||
XImage image;
|
||||
sk_bzero(&image, sizeof(image));
|
||||
|
||||
int bitsPerPixel = bitmap.bytesPerPixel() * 8;
|
||||
image.width = bitmap.width();
|
||||
image.height = bitmap.height();
|
||||
image.format = ZPixmap;
|
||||
image.data = (char*) bitmap.getPixels();
|
||||
image.byte_order = LSBFirst;
|
||||
image.bitmap_unit = bitsPerPixel;
|
||||
image.bitmap_bit_order = LSBFirst;
|
||||
image.bitmap_pad = bitsPerPixel;
|
||||
image.depth = 24;
|
||||
image.bytes_per_line = bitmap.rowBytes() - bitmap.width() * bitmap.bytesPerPixel();
|
||||
image.bits_per_pixel = bitsPerPixel;
|
||||
int status = XInitImage(&image);
|
||||
XPutImage(fUnixWindow.fDisplay, fUnixWindow.fWin, fUnixWindow.fGc, &image, 0, 0, 0, 0, width(), height());
|
||||
}
|
||||
|
||||
bool SkOSWindow::onHandleChar(SkUnichar)
|
||||
|
@ -6,7 +6,8 @@ SOURCE := \
|
||||
SkTagList.cpp \
|
||||
SkView.cpp \
|
||||
SkViewPriv.cpp \
|
||||
SkWindow.cpp
|
||||
SkWindow.cpp \
|
||||
SkTouchGesture.cpp
|
||||
# SkBGViewArtist.cpp \
|
||||
SkListView.cpp \
|
||||
SkListWidget.cpp \
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include "SampleCode.h"
|
||||
#include "SkCanvas.h"
|
||||
#include "SkColor.h"
|
||||
#include "SampleCode.h"
|
||||
#include "SkEvent.h"
|
||||
#include "SkView.h"
|
||||
|
||||
class DrawBlue : public SkView {
|
||||
@ -11,6 +12,15 @@ protected:
|
||||
virtual void onDraw(SkCanvas* canvas) {
|
||||
canvas->drawColor(SK_ColorBLUE);
|
||||
}
|
||||
virtual bool onQuery(SkEvent* evt) {
|
||||
if (SampleCode::TitleQ(*evt)) {
|
||||
SampleCode::TitleR(evt, "DrawBlue");
|
||||
return true;
|
||||
}
|
||||
return this->INHERITED::onQuery(evt);
|
||||
}
|
||||
private:
|
||||
typedef SkView INHERITED;
|
||||
};
|
||||
|
||||
static SkView* MyFactory() { return new DrawBlue; }
|
||||
|
@ -12,12 +12,12 @@ C_INCLUDES := -I../include/core \
|
||||
-I../include/utils/unix \
|
||||
-I../samplecode
|
||||
|
||||
VPATH = libs:../src/ports:../samplecode:../src/core:../out:../src/utils/unix
|
||||
VPATH = libs:../src/ports:../samplecode:../src/core:../src/utils/unix
|
||||
|
||||
#generate debugging info
|
||||
CFLAGS = -g
|
||||
|
||||
SRC_LIST := main.cpp SkOSWindow_Unix.cpp SkXMLParser_empty.cpp SkDebug.cpp keysym2ucs.c
|
||||
SRC_LIST := main.cpp SkOSWindow_Unix.cpp SkXMLParser_empty.cpp SkDebug.cpp
|
||||
|
||||
#views files
|
||||
include ../src/views/views_files.mk
|
||||
@ -31,6 +31,17 @@ SRC_LIST += $(addprefix ../src/xml/, $(SOURCE))
|
||||
include ../samplecode/samplecode_files.mk
|
||||
SRC_LIST += $(addprefix ../samplecode/, $(SOURCE))
|
||||
|
||||
output: $(SRC_LIST) -lX11 -lskia -lpthread -lz -lfreetype -lGL -lpng
|
||||
|
||||
out/output: $(SRC_LIST) out/keysym2ucs.o ../out/libskia.a -lX11 -lpthread -lz -lfreetype -lGL -lpng
|
||||
g++ $(C_INCLUDES) $(CFLAGS) $^ -o $@
|
||||
|
||||
out/keysym2ucs.o: ../src/utils/unix/keysym2ucs.c
|
||||
@mkdir -p $(dir $@)
|
||||
@gcc -c $(C_INCLUDES) $(CFLAGS) $^ -o $@
|
||||
|
||||
../out/libskia.a:
|
||||
@$(MAKE) -C ../ SKIA_SAMPLES_FOR_X=true
|
||||
|
||||
clean:
|
||||
rm -rf ../out # Copied from ../Makefile
|
||||
rm -rf out
|
||||
|
Loading…
Reference in New Issue
Block a user