diff --git a/unix_test_app/DrawBlueSample.cpp b/unix_test_app/DrawBlueSample.cpp new file mode 100644 index 000000000..83e6fd5ea --- /dev/null +++ b/unix_test_app/DrawBlueSample.cpp @@ -0,0 +1,34 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#include "SampleCode.h" +#include "SkCanvas.h" +#include "SkColor.h" +#include "SkEvent.h" +#include "SkView.h" + +class DrawBlue : public SkView { + +public: + DrawBlue() {} +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; } +static SkViewRegister reg(MyFactory); diff --git a/unix_test_app/main.cpp b/unix_test_app/main.cpp new file mode 100644 index 000000000..108e9ac20 --- /dev/null +++ b/unix_test_app/main.cpp @@ -0,0 +1,62 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#include "X11/Xlib.h" +#include "X11/keysym.h" + +#include "SkApplication.h" +#include "SkEvent.h" +#include "SkWindow.h" +#include "SkTypes.h" + +#include +#include + +SkOSWindow* gWindow; + +static void catch_alarm(int sig) +{ + SkEvent::ServiceQueueTimer(); +} + +int main(int argc, char** argv){ + signal(SIGALRM, catch_alarm); + + gWindow = create_sk_window(NULL, argc, argv); + + // drain any events that occurred before gWindow was assigned. + while (SkEvent::ProcessEvent()); + + // Start normal Skia sequence + application_init(); + + gWindow->loop(); + + delete gWindow; + application_term(); + return 0; +} + +// SkEvent handlers + +void SkEvent::SignalNonEmptyQueue() +{ + if (gWindow) { + gWindow->post_linuxevent(); + } +} + +void SkEvent::SignalQueueTimer(SkMSec delay) +{ + itimerval newTimer; + newTimer.it_interval.tv_sec = 0; + newTimer.it_interval.tv_usec = 0; + newTimer.it_value.tv_sec = 0; + newTimer.it_value.tv_usec = delay * 1000; + + setitimer(ITIMER_REAL, &newTimer, NULL); +} diff --git a/unix_test_app/makefile b/unix_test_app/makefile new file mode 100644 index 000000000..7b2820338 --- /dev/null +++ b/unix_test_app/makefile @@ -0,0 +1,48 @@ +# Build the unix test app + +C_INCLUDES := -I../include/core \ + -I../include/config \ + -I../include/effects \ + -I../include/images \ + -I../include/utils \ + -I../include/views \ + -I../include/xml \ + -I../include/gpu \ + -I../gpu/include \ + -I../include/utils/unix \ + -I../samplecode \ + -I../src/core + +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 ../gpu/src/unix/GrGLDefaultInterface_unix.cpp + +#views files +include ../src/views/views_files.mk +SRC_LIST += $(addprefix ../src/views/, $(SOURCE)) + +#xml +include ../src/xml/xml_files.mk +SRC_LIST += $(addprefix ../src/xml/, $(SOURCE)) + +#include the samples +include ../samplecode/samplecode_files.mk +SRC_LIST += $(addprefix ../samplecode/, $(SOURCE)) + + +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