wx/univ/window.h
@COND_USE_GUI_1_WXUNIV_1@GUI_CORE_HEADERS = $(COND_USE_GUI_1_WXUNIV_1_GUI_CORE_HEADERS)
COND_USE_GUI_1_ALL_GUI_HEADERS = \
+ wx/affinematrix2dbase.h \
+ wx/affinematrix2d.h \
wx/bmpbuttn.h \
wx/brush.h \
wx/button.h \
monodll_accelcmn.o \
monodll_accesscmn.o \
monodll_anidecod.o \
+ monodll_affinematrix2d.o \
monodll_appcmn.o \
monodll_artprov.o \
monodll_artstd.o \
monodll_accelcmn.o \
monodll_accesscmn.o \
monodll_anidecod.o \
+ monodll_affinematrix2d.o \
monodll_appcmn.o \
monodll_artprov.o \
monodll_artstd.o \
monolib_accelcmn.o \
monolib_accesscmn.o \
monolib_anidecod.o \
+ monolib_affinematrix2d.o \
monolib_appcmn.o \
monolib_artprov.o \
monolib_artstd.o \
monolib_accelcmn.o \
monolib_accesscmn.o \
monolib_anidecod.o \
+ monolib_affinematrix2d.o \
monolib_appcmn.o \
monolib_artprov.o \
monolib_artstd.o \
coredll_accelcmn.o \
coredll_accesscmn.o \
coredll_anidecod.o \
+ coredll_affinematrix2d.o \
coredll_appcmn.o \
coredll_artprov.o \
coredll_artstd.o \
coredll_accelcmn.o \
coredll_accesscmn.o \
coredll_anidecod.o \
+ coredll_affinematrix2d.o \
coredll_appcmn.o \
coredll_artprov.o \
coredll_artstd.o \
corelib_accelcmn.o \
corelib_accesscmn.o \
corelib_anidecod.o \
+ corelib_affinematrix2d.o \
corelib_appcmn.o \
corelib_artprov.o \
corelib_artstd.o \
corelib_accelcmn.o \
corelib_accesscmn.o \
corelib_anidecod.o \
+ corelib_affinematrix2d.o \
corelib_appcmn.o \
corelib_artprov.o \
corelib_artstd.o \
@COND_USE_GUI_1@monodll_anidecod.o: $(srcdir)/src/common/anidecod.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/anidecod.cpp
+@COND_USE_GUI_1@monodll_affinematrix2d.o: $(srcdir)/src/common/affinematrix2d.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/affinematrix2d.cpp
+
@COND_USE_GUI_1@monodll_appcmn.o: $(srcdir)/src/common/appcmn.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/appcmn.cpp
@COND_USE_GUI_1@monolib_anidecod.o: $(srcdir)/src/common/anidecod.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/anidecod.cpp
+@COND_USE_GUI_1@monolib_affinematrix2d.o: $(srcdir)/src/common/affinematrix2d.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/affinematrix2d.cpp
+
@COND_USE_GUI_1@monolib_appcmn.o: $(srcdir)/src/common/appcmn.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/appcmn.cpp
@COND_USE_GUI_1@coredll_anidecod.o: $(srcdir)/src/common/anidecod.cpp $(COREDLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/anidecod.cpp
+@COND_USE_GUI_1@coredll_affinematrix2d.o: $(srcdir)/src/common/affinematrix2d.cpp $(COREDLL_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/affinematrix2d.cpp
+
@COND_USE_GUI_1@coredll_appcmn.o: $(srcdir)/src/common/appcmn.cpp $(COREDLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/appcmn.cpp
@COND_USE_GUI_1@corelib_anidecod.o: $(srcdir)/src/common/anidecod.cpp $(CORELIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/anidecod.cpp
+@COND_USE_GUI_1@corelib_affinematrix2d.o: $(srcdir)/src/common/affinematrix2d.cpp $(CORELIB_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/affinematrix2d.cpp
+
@COND_USE_GUI_1@corelib_appcmn.o: $(srcdir)/src/common/appcmn.cpp $(CORELIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/appcmn.cpp
src/common/accelcmn.cpp
src/common/accesscmn.cpp
src/common/anidecod.cpp
+ src/common/affinematrix2d.cpp
src/common/appcmn.cpp
src/common/artprov.cpp
src/common/artstd.cpp
src/generic/vscroll.cpp
</set>
<set var="GUI_CMN_HDR" hints="files">
+ wx/affinematrix2dbase.h
+ wx/affinematrix2d.h
wx/bmpbuttn.h
wx/brush.h
wx/button.h
$(OBJS)\monodll_accelcmn.obj \\r
$(OBJS)\monodll_accesscmn.obj \\r
$(OBJS)\monodll_anidecod.obj \\r
+ $(OBJS)\monodll_affinematrix2d.obj \\r
$(OBJS)\monodll_appcmn.obj \\r
$(OBJS)\monodll_artprov.obj \\r
$(OBJS)\monodll_artstd.obj \\r
$(OBJS)\monodll_accelcmn.obj \\r
$(OBJS)\monodll_accesscmn.obj \\r
$(OBJS)\monodll_anidecod.obj \\r
+ $(OBJS)\monodll_affinematrix2d.obj \\r
$(OBJS)\monodll_appcmn.obj \\r
$(OBJS)\monodll_artprov.obj \\r
$(OBJS)\monodll_artstd.obj \\r
$(OBJS)\monolib_accelcmn.obj \\r
$(OBJS)\monolib_accesscmn.obj \\r
$(OBJS)\monolib_anidecod.obj \\r
+ $(OBJS)\monolib_affinematrix2d.obj \\r
$(OBJS)\monolib_appcmn.obj \\r
$(OBJS)\monolib_artprov.obj \\r
$(OBJS)\monolib_artstd.obj \\r
$(OBJS)\monolib_accelcmn.obj \\r
$(OBJS)\monolib_accesscmn.obj \\r
$(OBJS)\monolib_anidecod.obj \\r
+ $(OBJS)\monolib_affinematrix2d.obj \\r
$(OBJS)\monolib_appcmn.obj \\r
$(OBJS)\monolib_artprov.obj \\r
$(OBJS)\monolib_artstd.obj \\r
$(OBJS)\coredll_accelcmn.obj \\r
$(OBJS)\coredll_accesscmn.obj \\r
$(OBJS)\coredll_anidecod.obj \\r
+ $(OBJS)\coredll_affinematrix2d.obj \\r
$(OBJS)\coredll_appcmn.obj \\r
$(OBJS)\coredll_artprov.obj \\r
$(OBJS)\coredll_artstd.obj \\r
$(OBJS)\coredll_accelcmn.obj \\r
$(OBJS)\coredll_accesscmn.obj \\r
$(OBJS)\coredll_anidecod.obj \\r
+ $(OBJS)\coredll_affinematrix2d.obj \\r
$(OBJS)\coredll_appcmn.obj \\r
$(OBJS)\coredll_artprov.obj \\r
$(OBJS)\coredll_artstd.obj \\r
$(OBJS)\corelib_accelcmn.obj \\r
$(OBJS)\corelib_accesscmn.obj \\r
$(OBJS)\corelib_anidecod.obj \\r
+ $(OBJS)\corelib_affinematrix2d.obj \\r
$(OBJS)\corelib_appcmn.obj \\r
$(OBJS)\corelib_artprov.obj \\r
$(OBJS)\corelib_artstd.obj \\r
$(OBJS)\corelib_accelcmn.obj \\r
$(OBJS)\corelib_accesscmn.obj \\r
$(OBJS)\corelib_anidecod.obj \\r
+ $(OBJS)\corelib_affinematrix2d.obj \\r
$(OBJS)\corelib_appcmn.obj \\r
$(OBJS)\corelib_artprov.obj \\r
$(OBJS)\corelib_artstd.obj \\r
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\anidecod.cpp\r
!endif\r
\r
+!if "$(USE_GUI)" == "1"\r
+$(OBJS)\monodll_affinematrix2d.obj: ..\..\src\common\affinematrix2d.cpp\r
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\affinematrix2d.cpp\r
+!endif\r
+\r
!if "$(USE_GUI)" == "1"\r
$(OBJS)\monodll_appcmn.obj: ..\..\src\common\appcmn.cpp\r
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\appcmn.cpp\r
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\anidecod.cpp\r
!endif\r
\r
+!if "$(USE_GUI)" == "1"\r
+$(OBJS)\monolib_affinematrix2d.obj: ..\..\src\common\affinematrix2d.cpp\r
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\affinematrix2d.cpp\r
+!endif\r
+\r
!if "$(USE_GUI)" == "1"\r
$(OBJS)\monolib_appcmn.obj: ..\..\src\common\appcmn.cpp\r
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\appcmn.cpp\r
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\common\anidecod.cpp\r
!endif\r
\r
+!if "$(USE_GUI)" == "1"\r
+$(OBJS)\coredll_affinematrix2d.obj: ..\..\src\common\affinematrix2d.cpp\r
+ $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\common\affinematrix2d.cpp\r
+!endif\r
+\r
!if "$(USE_GUI)" == "1"\r
$(OBJS)\coredll_appcmn.obj: ..\..\src\common\appcmn.cpp\r
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\common\appcmn.cpp\r
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\common\anidecod.cpp\r
!endif\r
\r
+!if "$(USE_GUI)" == "1"\r
+$(OBJS)\corelib_affinematrix2d.obj: ..\..\src\common\affinematrix2d.cpp\r
+ $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\common\affinematrix2d.cpp\r
+!endif\r
+\r
!if "$(USE_GUI)" == "1"\r
$(OBJS)\corelib_appcmn.obj: ..\..\src\common\appcmn.cpp\r
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\common\appcmn.cpp\r
$(OBJS)\monodll_accelcmn.o \\r
$(OBJS)\monodll_accesscmn.o \\r
$(OBJS)\monodll_anidecod.o \\r
+ $(OBJS)\monodll_affinematrix2d.o \\r
$(OBJS)\monodll_appcmn.o \\r
$(OBJS)\monodll_artprov.o \\r
$(OBJS)\monodll_artstd.o \\r
$(OBJS)\monodll_accelcmn.o \\r
$(OBJS)\monodll_accesscmn.o \\r
$(OBJS)\monodll_anidecod.o \\r
+ $(OBJS)\monodll_affinematrix2d.o \\r
$(OBJS)\monodll_appcmn.o \\r
$(OBJS)\monodll_artprov.o \\r
$(OBJS)\monodll_artstd.o \\r
$(OBJS)\monolib_accelcmn.o \\r
$(OBJS)\monolib_accesscmn.o \\r
$(OBJS)\monolib_anidecod.o \\r
+ $(OBJS)\monolib_affinematrix2d.o \\r
$(OBJS)\monolib_appcmn.o \\r
$(OBJS)\monolib_artprov.o \\r
$(OBJS)\monolib_artstd.o \\r
$(OBJS)\monolib_accelcmn.o \\r
$(OBJS)\monolib_accesscmn.o \\r
$(OBJS)\monolib_anidecod.o \\r
+ $(OBJS)\monolib_affinematrix2d.o \\r
$(OBJS)\monolib_appcmn.o \\r
$(OBJS)\monolib_artprov.o \\r
$(OBJS)\monolib_artstd.o \\r
$(OBJS)\coredll_accelcmn.o \\r
$(OBJS)\coredll_accesscmn.o \\r
$(OBJS)\coredll_anidecod.o \\r
+ $(OBJS)\coredll_affinematrix2d.o \\r
$(OBJS)\coredll_appcmn.o \\r
$(OBJS)\coredll_artprov.o \\r
$(OBJS)\coredll_artstd.o \\r
$(OBJS)\coredll_accelcmn.o \\r
$(OBJS)\coredll_accesscmn.o \\r
$(OBJS)\coredll_anidecod.o \\r
+ $(OBJS)\coredll_affinematrix2d.o \\r
$(OBJS)\coredll_appcmn.o \\r
$(OBJS)\coredll_artprov.o \\r
$(OBJS)\coredll_artstd.o \\r
$(OBJS)\corelib_accelcmn.o \\r
$(OBJS)\corelib_accesscmn.o \\r
$(OBJS)\corelib_anidecod.o \\r
+ $(OBJS)\corelib_affinematrix2d.o \\r
$(OBJS)\corelib_appcmn.o \\r
$(OBJS)\corelib_artprov.o \\r
$(OBJS)\corelib_artstd.o \\r
$(OBJS)\corelib_accelcmn.o \\r
$(OBJS)\corelib_accesscmn.o \\r
$(OBJS)\corelib_anidecod.o \\r
+ $(OBJS)\corelib_affinematrix2d.o \\r
$(OBJS)\corelib_appcmn.o \\r
$(OBJS)\corelib_artprov.o \\r
$(OBJS)\corelib_artstd.o \\r
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<\r
endif\r
\r
+ifeq ($(USE_GUI),1)\r
+$(OBJS)\monodll_affinematrix2d.o: ../../src/common/affinematrix2d.cpp\r
+ $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<\r
+endif\r
+\r
ifeq ($(USE_GUI),1)\r
$(OBJS)\monodll_appcmn.o: ../../src/common/appcmn.cpp\r
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<\r
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<\r
endif\r
\r
+ifeq ($(USE_GUI),1)\r
+$(OBJS)\monolib_affinematrix2d.o: ../../src/common/affinematrix2d.cpp\r
+ $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<\r
+endif\r
+\r
ifeq ($(USE_GUI),1)\r
$(OBJS)\monolib_appcmn.o: ../../src/common/appcmn.cpp\r
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<\r
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<\r
endif\r
\r
+ifeq ($(USE_GUI),1)\r
+$(OBJS)\coredll_affinematrix2d.o: ../../src/common/affinematrix2d.cpp\r
+ $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<\r
+endif\r
+\r
ifeq ($(USE_GUI),1)\r
$(OBJS)\coredll_appcmn.o: ../../src/common/appcmn.cpp\r
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<\r
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<\r
endif\r
\r
+ifeq ($(USE_GUI),1)\r
+$(OBJS)\corelib_affinematrix2d.o: ../../src/common/affinematrix2d.cpp\r
+ $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<\r
+endif\r
+\r
ifeq ($(USE_GUI),1)\r
$(OBJS)\corelib_appcmn.o: ../../src/common/appcmn.cpp\r
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<\r
$(OBJS)\monodll_accelcmn.obj \\r
$(OBJS)\monodll_accesscmn.obj \\r
$(OBJS)\monodll_anidecod.obj \\r
+ $(OBJS)\monodll_affinematrix2d.obj \\r
$(OBJS)\monodll_appcmn.obj \\r
$(OBJS)\monodll_artprov.obj \\r
$(OBJS)\monodll_artstd.obj \\r
$(OBJS)\monodll_accelcmn.obj \\r
$(OBJS)\monodll_accesscmn.obj \\r
$(OBJS)\monodll_anidecod.obj \\r
+ $(OBJS)\monodll_affinematrix2d.obj \\r
$(OBJS)\monodll_appcmn.obj \\r
$(OBJS)\monodll_artprov.obj \\r
$(OBJS)\monodll_artstd.obj \\r
$(OBJS)\monolib_accelcmn.obj \\r
$(OBJS)\monolib_accesscmn.obj \\r
$(OBJS)\monolib_anidecod.obj \\r
+ $(OBJS)\monolib_affinematrix2d.obj \\r
$(OBJS)\monolib_appcmn.obj \\r
$(OBJS)\monolib_artprov.obj \\r
$(OBJS)\monolib_artstd.obj \\r
$(OBJS)\monolib_accelcmn.obj \\r
$(OBJS)\monolib_accesscmn.obj \\r
$(OBJS)\monolib_anidecod.obj \\r
+ $(OBJS)\monolib_affinematrix2d.obj \\r
$(OBJS)\monolib_appcmn.obj \\r
$(OBJS)\monolib_artprov.obj \\r
$(OBJS)\monolib_artstd.obj \\r
$(OBJS)\coredll_accelcmn.obj \\r
$(OBJS)\coredll_accesscmn.obj \\r
$(OBJS)\coredll_anidecod.obj \\r
+ $(OBJS)\coredll_affinematrix2d.obj \\r
$(OBJS)\coredll_appcmn.obj \\r
$(OBJS)\coredll_artprov.obj \\r
$(OBJS)\coredll_artstd.obj \\r
$(OBJS)\coredll_accelcmn.obj \\r
$(OBJS)\coredll_accesscmn.obj \\r
$(OBJS)\coredll_anidecod.obj \\r
+ $(OBJS)\coredll_affinematrix2d.obj \\r
$(OBJS)\coredll_appcmn.obj \\r
$(OBJS)\coredll_artprov.obj \\r
$(OBJS)\coredll_artstd.obj \\r
$(OBJS)\corelib_accelcmn.obj \\r
$(OBJS)\corelib_accesscmn.obj \\r
$(OBJS)\corelib_anidecod.obj \\r
+ $(OBJS)\corelib_affinematrix2d.obj \\r
$(OBJS)\corelib_appcmn.obj \\r
$(OBJS)\corelib_artprov.obj \\r
$(OBJS)\corelib_artstd.obj \\r
$(OBJS)\corelib_accelcmn.obj \\r
$(OBJS)\corelib_accesscmn.obj \\r
$(OBJS)\corelib_anidecod.obj \\r
+ $(OBJS)\corelib_affinematrix2d.obj \\r
$(OBJS)\corelib_appcmn.obj \\r
$(OBJS)\corelib_artprov.obj \\r
$(OBJS)\corelib_artstd.obj \\r
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\anidecod.cpp\r
!endif\r
\r
+!if "$(USE_GUI)" == "1"\r
+$(OBJS)\monodll_affinematrix2d.obj: ..\..\src\common\affinematrix2d.cpp\r
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\affinematrix2d.cpp\r
+!endif\r
+\r
!if "$(USE_GUI)" == "1"\r
$(OBJS)\monodll_appcmn.obj: ..\..\src\common\appcmn.cpp\r
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\appcmn.cpp\r
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\anidecod.cpp\r
!endif\r
\r
+!if "$(USE_GUI)" == "1"\r
+$(OBJS)\monolib_affinematrix2d.obj: ..\..\src\common\affinematrix2d.cpp\r
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\affinematrix2d.cpp\r
+!endif\r
+\r
!if "$(USE_GUI)" == "1"\r
$(OBJS)\monolib_appcmn.obj: ..\..\src\common\appcmn.cpp\r
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\appcmn.cpp\r
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\common\anidecod.cpp\r
!endif\r
\r
+!if "$(USE_GUI)" == "1"\r
+$(OBJS)\coredll_affinematrix2d.obj: ..\..\src\common\affinematrix2d.cpp\r
+ $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\common\affinematrix2d.cpp\r
+!endif\r
+\r
!if "$(USE_GUI)" == "1"\r
$(OBJS)\coredll_appcmn.obj: ..\..\src\common\appcmn.cpp\r
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\common\appcmn.cpp\r
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\common\anidecod.cpp\r
!endif\r
\r
+!if "$(USE_GUI)" == "1"\r
+$(OBJS)\corelib_affinematrix2d.obj: ..\..\src\common\affinematrix2d.cpp\r
+ $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\common\affinematrix2d.cpp\r
+!endif\r
+\r
!if "$(USE_GUI)" == "1"\r
$(OBJS)\corelib_appcmn.obj: ..\..\src\common\appcmn.cpp\r
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\common\appcmn.cpp\r
$(OBJS)\monodll_accelcmn.obj &\r
$(OBJS)\monodll_accesscmn.obj &\r
$(OBJS)\monodll_anidecod.obj &\r
+ $(OBJS)\monodll_affinematrix2d.obj &\r
$(OBJS)\monodll_appcmn.obj &\r
$(OBJS)\monodll_artprov.obj &\r
$(OBJS)\monodll_artstd.obj &\r
$(OBJS)\monodll_accelcmn.obj &\r
$(OBJS)\monodll_accesscmn.obj &\r
$(OBJS)\monodll_anidecod.obj &\r
+ $(OBJS)\monodll_affinematrix2d.obj &\r
$(OBJS)\monodll_appcmn.obj &\r
$(OBJS)\monodll_artprov.obj &\r
$(OBJS)\monodll_artstd.obj &\r
$(OBJS)\monolib_accelcmn.obj &\r
$(OBJS)\monolib_accesscmn.obj &\r
$(OBJS)\monolib_anidecod.obj &\r
+ $(OBJS)\monolib_affinematrix2d.obj &\r
$(OBJS)\monolib_appcmn.obj &\r
$(OBJS)\monolib_artprov.obj &\r
$(OBJS)\monolib_artstd.obj &\r
$(OBJS)\monolib_accelcmn.obj &\r
$(OBJS)\monolib_accesscmn.obj &\r
$(OBJS)\monolib_anidecod.obj &\r
+ $(OBJS)\monolib_affinematrix2d.obj &\r
$(OBJS)\monolib_appcmn.obj &\r
$(OBJS)\monolib_artprov.obj &\r
$(OBJS)\monolib_artstd.obj &\r
$(OBJS)\coredll_accelcmn.obj &\r
$(OBJS)\coredll_accesscmn.obj &\r
$(OBJS)\coredll_anidecod.obj &\r
+ $(OBJS)\coredll_affinematrix2d.obj &\r
$(OBJS)\coredll_appcmn.obj &\r
$(OBJS)\coredll_artprov.obj &\r
$(OBJS)\coredll_artstd.obj &\r
$(OBJS)\coredll_accelcmn.obj &\r
$(OBJS)\coredll_accesscmn.obj &\r
$(OBJS)\coredll_anidecod.obj &\r
+ $(OBJS)\coredll_affinematrix2d.obj &\r
$(OBJS)\coredll_appcmn.obj &\r
$(OBJS)\coredll_artprov.obj &\r
$(OBJS)\coredll_artstd.obj &\r
$(OBJS)\corelib_accelcmn.obj &\r
$(OBJS)\corelib_accesscmn.obj &\r
$(OBJS)\corelib_anidecod.obj &\r
+ $(OBJS)\corelib_affinematrix2d.obj &\r
$(OBJS)\corelib_appcmn.obj &\r
$(OBJS)\corelib_artprov.obj &\r
$(OBJS)\corelib_artstd.obj &\r
$(OBJS)\corelib_accelcmn.obj &\r
$(OBJS)\corelib_accesscmn.obj &\r
$(OBJS)\corelib_anidecod.obj &\r
+ $(OBJS)\corelib_affinematrix2d.obj &\r
$(OBJS)\corelib_appcmn.obj &\r
$(OBJS)\corelib_artprov.obj &\r
$(OBJS)\corelib_artstd.obj &\r
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<\r
!endif\r
\r
+!ifeq USE_GUI 1\r
+$(OBJS)\monodll_affinematrix2d.obj : .AUTODEPEND ..\..\src\common\affinematrix2d.cpp\r
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<\r
+!endif\r
+\r
!ifeq USE_GUI 1\r
$(OBJS)\monodll_appcmn.obj : .AUTODEPEND ..\..\src\common\appcmn.cpp\r
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<\r
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<\r
!endif\r
\r
+!ifeq USE_GUI 1\r
+$(OBJS)\monolib_affinematrix2d.obj : .AUTODEPEND ..\..\src\common\affinematrix2d.cpp\r
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<\r
+!endif\r
+\r
!ifeq USE_GUI 1\r
$(OBJS)\monolib_appcmn.obj : .AUTODEPEND ..\..\src\common\appcmn.cpp\r
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<\r
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<\r
!endif\r
\r
+!ifeq USE_GUI 1\r
+$(OBJS)\coredll_affinematrix2d.obj : .AUTODEPEND ..\..\src\common\affinematrix2d.cpp\r
+ $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<\r
+!endif\r
+\r
!ifeq USE_GUI 1\r
$(OBJS)\coredll_appcmn.obj : .AUTODEPEND ..\..\src\common\appcmn.cpp\r
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<\r
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<\r
!endif\r
\r
+!ifeq USE_GUI 1\r
+$(OBJS)\corelib_affinematrix2d.obj : .AUTODEPEND ..\..\src\common\affinematrix2d.cpp\r
+ $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<\r
+!endif\r
+\r
!ifeq USE_GUI 1\r
$(OBJS)\corelib_appcmn.obj : .AUTODEPEND ..\..\src\common\appcmn.cpp\r
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=..\..\src\common\affinematrix2d.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\..\src\common\anidecod.cpp\r
# End Source File\r
# Begin Source File\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=..\..\include\wx\affinematrix2d.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\wx\affinematrix2dbase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\..\include\wx\anidecod.h\r
# End Source File\r
# Begin Source File\r
# End Source File\r
# Begin Source File\r
\r
-SOURCE=..\..\include\wx\textcompleter.h
-# End Source File
-# Begin Source File
-
+SOURCE=..\..\include\wx\textcompleter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\..\include\wx\textctrl.h\r
# End Source File\r
# Begin Source File\r
<File\r
RelativePath="..\..\src\common\accesscmn.cpp">\r
</File>\r
+ <File\r
+ RelativePath="..\..\src\common\affinematrix2d.cpp">\r
+ </File>\r
<File\r
RelativePath="..\..\src\common\anidecod.cpp">\r
</File>\r
<File\r
RelativePath="..\..\include\wx\propgrid\advprops.h">\r
</File>\r
+ <File\r
+ RelativePath="..\..\include\wx\affinematrix2d.h">\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\include\wx\affinematrix2dbase.h">\r
+ </File>\r
<File\r
RelativePath="..\..\include\wx\anidecod.h">\r
</File>\r
RelativePath="..\..\include\wx\tbarbase.h">\r
</File>\r
<File\r
- RelativePath="..\..\include\wx\textcompleter.h">
- </File>
- <File
+ RelativePath="..\..\include\wx\textcompleter.h">\r
+ </File>\r
+ <File\r
RelativePath="..\..\include\wx\textctrl.h">\r
</File>\r
<File\r
RelativePath="..\..\src\common\accesscmn.cpp"\r
>\r
</File>\r
+ <File\r
+ RelativePath="..\..\src\common\affinematrix2d.cpp"\r
+ >\r
+ </File>\r
<File\r
RelativePath="..\..\src\common\anidecod.cpp"\r
>\r
RelativePath="..\..\include\wx\propgrid\advprops.h"\r
>\r
</File>\r
+ <File\r
+ RelativePath="..\..\include\wx\affinematrix2d.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\include\wx\affinematrix2dbase.h"\r
+ >\r
+ </File>\r
<File\r
RelativePath="..\..\include\wx\anidecod.h"\r
>\r
>\r
</File>\r
<File\r
- RelativePath="..\..\include\wx\textcompleter.h"
- >
- </File>
- <File
+ RelativePath="..\..\include\wx\textcompleter.h"\r
+ >\r
+ </File>\r
+ <File\r
RelativePath="..\..\include\wx\textctrl.h"\r
>\r
</File>\r
RelativePath="..\..\src\common\accesscmn.cpp"\r
>\r
</File>\r
+ <File\r
+ RelativePath="..\..\src\common\affinematrix2d.cpp"\r
+ >\r
+ </File>\r
<File\r
RelativePath="..\..\src\common\anidecod.cpp"\r
>\r
RelativePath="..\..\include\wx\propgrid\advprops.h"\r
>\r
</File>\r
+ <File\r
+ RelativePath="..\..\include\wx\affinematrix2d.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\include\wx\affinematrix2dbase.h"\r
+ >\r
+ </File>\r
<File\r
RelativePath="..\..\include\wx\anidecod.h"\r
>\r
>\r
</File>\r
<File\r
- RelativePath="..\..\include\wx\textcompleter.h"
- >
- </File>
- <File
+ RelativePath="..\..\include\wx\textcompleter.h"\r
+ >\r
+ </File>\r
+ <File\r
RelativePath="..\..\include\wx\textctrl.h"\r
>\r
</File>\r
- Add WXK_CONTROL_A..WXK_CONTROL_Z constants (Jan van Dijk).
- Add support for alpha channel in colours in wxSVGFileDC (snowleopard).
- Allow customizing AUI tab colours in wxAuiTabArt (snowleopard).
+- Added wxAffineMatrix2D class (Catalin Raceanu).
GTK:
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/affinematrix2d.h
+// Purpose: wxAffineMatrix2D class.
+// Author: Based on wxTransformMatrix by Chris Breeze, Julian Smart
+// Created: 2011-04-05
+// Copyright: (c) wxWidgets team
+// Licence: wxWidgets licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_AFFINEMATRIX2D_H_
+#define _WX_AFFINEMATRIX2D_H_
+
+#include "wx/affinematrix2dbase.h"
+
+// A simple implementation of wxAffineMatrix2DBase interface done entirely in
+// wxWidgets.
+class WXDLLIMPEXP_CORE wxAffineMatrix2D : public wxAffineMatrix2DBase
+{
+public:
+ wxAffineMatrix2D() : m_11(1), m_12(0),
+ m_21(0), m_22(1),
+ m_tx(0), m_ty(0)
+ {
+ }
+
+ // Implement base class pure virtual methods.
+ virtual void Set(const wxMatrix2D& mat2D, const wxPoint2DDouble& tr);
+ virtual void Get(wxMatrix2D* mat2D, wxPoint2DDouble* tr) const;
+ virtual void Concat(const wxAffineMatrix2DBase& t);
+ virtual bool Invert();
+ virtual bool IsIdentity() const;
+ virtual bool IsEqual(const wxAffineMatrix2DBase& t) const;
+ virtual void Translate(wxDouble dx, wxDouble dy);
+ virtual void Scale(wxDouble xScale, wxDouble yScale);
+ virtual void Rotate(wxDouble ccRadians);
+
+protected:
+ virtual wxPoint2DDouble DoTransformPoint(const wxPoint2DDouble& p) const;
+ virtual wxPoint2DDouble DoTransformDistance(const wxPoint2DDouble& p) const;
+
+private:
+ wxDouble m_11, m_12, m_21, m_22, m_tx, m_ty;
+};
+
+#endif // _WX_AFFINEMATRIX2D_H_
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/affinematrix2dbase.h
+// Purpose: Common interface for 2D transformation matrices.
+// Author: Catalin Raceanu
+// Created: 2011-04-06
+// Copyright: (c) wxWidgets team
+// Licence: wxWidgets licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_AFFINEMATRIX2DBASE_H_
+#define _WX_AFFINEMATRIX2DBASE_H_
+
+#include "wx/defs.h"
+#include "wx/geometry.h"
+
+struct wxMatrix2D
+{
+ wxMatrix2D(wxDouble v11 = 1,
+ wxDouble v12 = 0,
+ wxDouble v21 = 0,
+ wxDouble v22 = 1)
+ {
+ m_11 = v11; m_12 = v12;
+ m_21 = v21; m_22 = v22;
+ }
+
+ wxDouble m_11, m_12, m_21, m_22;
+};
+
+// A 2x3 matrix representing an affine 2D transformation.
+//
+// This is an abstract base class implemented by wxAffineMatrix2D only so far,
+// but in the future we also plan to derive wxGraphicsMatrix from it (it should
+// also be documented then as currently only wxAffineMatrix2D itself is).
+class WXDLLIMPEXP_CORE wxAffineMatrix2DBase
+{
+public:
+ wxAffineMatrix2DBase() {}
+
+ // sets the matrix to the respective values
+ virtual void Set(const wxMatrix2D& mat2D, const wxPoint2DDouble& tr) = 0;
+
+ // gets the component valuess of the matrix
+ virtual void Get(wxMatrix2D* mat2D, wxPoint2DDouble* tr) const = 0;
+
+ // concatenates the matrix
+ virtual void Concat(const wxAffineMatrix2DBase& t) = 0;
+
+ // makes this the inverse matrix
+ virtual bool Invert() = 0;
+
+ // return true if this is the identity matrix
+ virtual bool IsIdentity() const = 0;
+
+ // returns true if the elements of the transformation matrix are equal ?
+ virtual bool IsEqual(const wxAffineMatrix2DBase& t) const = 0;
+ bool operator==(const wxAffineMatrix2DBase& t) const { return IsEqual(t); }
+ bool operator!=(const wxAffineMatrix2DBase& t) const { return !IsEqual(t); }
+
+
+ //
+ // transformations
+ //
+
+ // add the translation to this matrix
+ virtual void Translate(wxDouble dx, wxDouble dy) = 0;
+
+ // add the scale to this matrix
+ virtual void Scale(wxDouble xScale, wxDouble yScale) = 0;
+
+ // add the rotation to this matrix (counter clockwise, radians)
+ virtual void Rotate(wxDouble ccRadians) = 0;
+
+ // add mirroring to this matrix
+ void Mirror(int direction = wxHORIZONTAL)
+ {
+ wxDouble x = (direction & wxHORIZONTAL) ? -1 : 1;
+ wxDouble y = (direction & wxVERTICAL) ? -1 : 1;
+ Scale(x, y);
+ }
+
+
+ // applies that matrix to the point
+ wxPoint2DDouble TransformPoint(const wxPoint2DDouble& src) const
+ {
+ return DoTransformPoint(src);
+ }
+
+ void TransformPoint(wxDouble* x, wxDouble* y) const
+ {
+ wxCHECK_RET( x && y, "Can't be NULL" );
+
+ const wxPoint2DDouble dst = DoTransformPoint(wxPoint2DDouble(*x, *y));
+ *x = dst.m_x;
+ *y = dst.m_y;
+ }
+
+ // applies the matrix except for translations
+ wxPoint2DDouble TransformDistance(const wxPoint2DDouble& src) const
+ {
+ return DoTransformDistance(src);
+ }
+
+ void TransformDistance(wxDouble* dx, wxDouble* dy) const
+ {
+ wxCHECK_RET( dx && dy, "Can't be NULL" );
+
+ const wxPoint2DDouble
+ dst = DoTransformDistance(wxPoint2DDouble(*dx, *dy));
+ *dx = dst.m_x;
+ *dy = dst.m_y;
+ }
+
+protected:
+ virtual
+ wxPoint2DDouble DoTransformPoint(const wxPoint2DDouble& p) const = 0;
+ virtual
+ wxPoint2DDouble DoTransformDistance(const wxPoint2DDouble& p) const = 0;
+};
+
+#endif // _WX_AFFINEMATRIX2DBASE_H_
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: affinematrix2d.h
+// Purpose: interface of wxAffineMatrix2D
+// Author: wxWidgets team
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+/**
+ @class wxAffineMatrix2D
+
+ A 3x2 matrix representing an affine 2D transformation.
+
+ @library{wxcore}
+ @category{misc}
+
+ @since 2.9.2
+*/
+class wxAffineMatrix2D
+{
+public:
+ /**
+ Default constructor.
+
+ The matrix elements are initialize to the identity matrix.
+ */
+ wxAffineMatrix2D();
+
+ /**
+ Get the component values of the matrix.
+
+ @param mat2D
+ The rotational components of the matrix (upper 2 x 2), must be
+ non-@NULL.
+ @param tr
+ The translational components of the matrix, may be @NULL.
+ */
+ void Get(wxMatrix2D* mat2D, wxPoint2DDouble* tr) const;
+
+ /**
+ Set all elements of this matrix.
+
+ @param mat2D
+ The rotational components of the matrix (upper 2 x 2).
+ @param tr
+ The translational components of the matrix.
+ */
+ void Set(const wxMatrix2D& mat2D, const wxPoint2DDouble& tr);
+
+ /**
+ Concatenate this matrix with another one.
+
+ The parameter matrix is the multiplicand.
+
+ @param wxAffineMatrix2DBase
+ The multiplicand.
+
+ @code
+ // | t.m_11 t.m_12 0 | | m_11 m_12 0 |
+ // matrix' = | t.m_21 t.m_22 0 | x | m_21 m_22 0 |
+ // | t.m_tx t.m_ty 1 | | m_tx m_ty 1 |
+ @endcode
+ */
+ void Concat(const wxAffineMatrix2DBase& t);
+
+ /**
+ Invert this matrix.
+
+ If the matrix is not invertible, i.e. if its determinant is 0, returns
+ false and doesn't modify it.
+
+ @code
+ // | m_11 m_12 0 |
+ // Invert | m_21 m_22 0 |
+ // | m_tx m_ty 1 |
+ @endcode
+ */
+ bool Invert();
+
+ /**
+ Check if this is the identity matrix.
+ */
+ bool IsIdentity() const;
+
+ //@{
+ /**
+ Check that this matrix is identical with @t.
+
+ @param wxAffineMatrix2DBase
+ The matrix compared with this.
+ */
+ void IsEqual(const wxAffineMatrix2DBase& t);
+ bool operator==(const wxAffineMatrix2DBase& t) const;
+ //@}
+
+ /**
+ Check that this matrix differs from @t.
+
+ @param wxAffineMatrix2DBase
+ The matrix compared with this.
+ */
+ bool operator!=(const wxAffineMatrix2DBase& t) const;
+
+ /**
+ Add the translation to this matrix.
+
+ @param dx
+ The translation in x direction.
+ @param dy
+ The translation in y direction.
+ */
+ void Translate(wxDouble dx, wxDouble dy);
+
+ /**
+ Add scaling to this matrix.
+
+ @param xScale
+ Scaling in x direction.
+ @param yScale
+ Scaling in y direction.
+ */
+ void Scale(wxDouble xScale, wxDouble yScale);
+
+ /**
+ Add mirroring to this matrix.
+
+ @param direction
+ The direction(s) used for mirroring. One of wxHORIZONTAL,
+ wxVERTICAL or their combination wxBOTH.
+ */
+ void Mirror(int direction = wxHORIZONTAL);
+
+ /**
+ Add counter clockwise rotation to this matrix.
+
+ @param ccRadians
+ Rotation angle in radians.
+ */
+ void Rotate(wxDouble ccRadians);
+
+ /**
+ Applies this matrix to the point.
+
+ @param src
+ The point receiving the transformations.
+
+ @return The point with the transformations applied.
+ */
+ wxPoint2DDouble TransformPoint(const wxPoint2DDouble& p) const;
+ void TransformPoint(wxDouble* x, wxDouble* y) const;
+
+ /**
+ Applies the linear part of this matrix, i.e. without translation.
+
+ @param src
+ The source receiving the transformations.
+
+ @return The source with the transformations applied.
+ */
+ wxPoint2DDouble TransformDistance(const wxPoint2DDouble& p) const;
+ void TransformDistance(wxDouble* dx, wxDouble* dy) const;
+};
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: affinematrix2dbase.h
+// Purpose: wxMatrix2D documentation
+// Author: wxWidgets team
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+/**
+ @class wxMatrix2D
+
+ A simple container for 2x2 matrix.
+
+ This simple structure is used with wxAffineMatrix2D.
+
+ @library{wxcore}
+ @category{misc}
+
+ @since 2.9.2
+ */
+struct wxMatrix2D
+{
+ /**
+ Default constructor.
+
+ Initializes the matrix elements to the identity.
+ */
+ wxMatrix2D(wxDouble v11 = 1,
+ wxDouble v12 = 0,
+ wxDouble v21 = 0,
+ wxDouble v22 = 1);
+
+ /// The matrix elements in the usual mathematical notation.
+ wxDouble m_11, m_12, m_21, m_22;
+};
--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name: affinematrix2d.cpp
+// Purpose: implementation of wxAffineMatrix2D
+// Author: Based on wxTransformMatrix by Chris Breeze, Julian Smart
+// Created: 2011-04-05
+// Copyright: (c) wxWidgets team
+// Licence: wxWidgets licence
+///////////////////////////////////////////////////////////////////////////////
+
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#include "wx/affinematrix2d.h"
+#include "wx/math.h"
+
+// sets the matrix to the respective values
+void wxAffineMatrix2D::Set(const wxMatrix2D &mat2D, const wxPoint2DDouble &tr)
+{
+ m_11 = mat2D.m_11;
+ m_12 = mat2D.m_12;
+ m_21 = mat2D.m_21;
+ m_22 = mat2D.m_22;
+ m_tx = tr.m_x;
+ m_ty = tr.m_y;
+}
+
+// gets the component valuess of the matrix
+void wxAffineMatrix2D::Get(wxMatrix2D *mat2D, wxPoint2DDouble *tr) const
+{
+ mat2D->m_11 = m_11;
+ mat2D->m_12 = m_12;
+ mat2D->m_21 = m_21;
+ mat2D->m_22 = m_22;
+
+ if ( tr )
+ {
+ tr->m_x = m_tx;
+ tr->m_y = m_ty;
+ }
+}
+
+// concatenates the matrix
+// | t.m_11 t.m_12 0 | | m_11 m_12 0 |
+// | t.m_21 t.m_22 0 | x | m_21 m_22 0 |
+// | t.m_tx t.m_ty 1 | | m_tx m_ty 1 |
+void wxAffineMatrix2D::Concat(const wxAffineMatrix2DBase &t)
+{
+ wxMatrix2D mat;
+ wxPoint2DDouble tr;
+ t.Get(&mat, &tr);
+
+ m_tx += tr.m_x*m_11 + tr.m_y*m_21;
+ m_ty += tr.m_x*m_12 + tr.m_y*m_22;
+ wxDouble e11 = mat.m_11*m_11 + mat.m_12*m_21;
+ wxDouble e12 = mat.m_11*m_12 + mat.m_12*m_22;
+ wxDouble e21 = mat.m_21*m_11 + mat.m_22*m_21;
+ m_22 = mat.m_21*m_12 + mat.m_22*m_22;
+ m_11 = e11;
+ m_12 = e12;
+ m_21 = e21;
+}
+
+// makes this its inverse matrix.
+// Invert
+// | m_11 m_12 0 |
+// | m_21 m_22 0 |
+// | m_tx m_ty 1 |
+bool wxAffineMatrix2D::Invert()
+{
+ const wxDouble det = m_11*m_22 - m_12*m_21;
+
+ if ( !det )
+ return false;
+
+ wxDouble ex = (m_21*m_ty - m_22*m_tx) / det;
+ m_ty = (-m_11*m_ty + m_12*m_tx) / det;
+ m_tx = ex;
+ wxDouble e11 = m_22 / det;
+ m_12 = -m_12 / det;
+ m_21 = -m_21 / det;
+ m_22 = m_11 / det;
+ m_11 = e11;
+
+ return true;
+}
+
+// returns true if the elements of the transformation matrix are equal
+bool wxAffineMatrix2D::IsEqual(const wxAffineMatrix2DBase& t) const
+{
+ wxMatrix2D mat;
+ wxPoint2DDouble tr;
+ t.Get(&mat, &tr);
+
+ return m_11 == mat.m_11 && m_12 == mat.m_12 &&
+ m_21 == mat.m_21 && m_22 == mat.m_22 &&
+ m_tx == tr.m_x && m_ty == tr.m_y;
+}
+
+//
+// transformations
+//
+
+// add the translation to this matrix
+void wxAffineMatrix2D::Translate(wxDouble dx, wxDouble dy)
+{
+ m_tx += dx;
+ m_ty += dy;
+}
+
+// add the scale to this matrix
+// | xScale 0 0 | | m_11 m_12 0 |
+// | 0 yScale 0 | x | m_21 m_22 0 |
+// | 0 0 1 | | m_tx m_ty 1 |
+void wxAffineMatrix2D::Scale(wxDouble xScale, wxDouble yScale)
+{
+ m_11 *= xScale;
+ m_12 *= xScale;
+ m_21 *= yScale;
+ m_22 *= yScale;
+}
+
+// add the rotation to this matrix (counter clockwise, radians)
+// | cos -sin 0 | | m_11 m_12 0 |
+// | sin cos 0 | x | m_21 m_22 0 |
+// | 0 0 1 | | m_tx m_ty 1 |
+void wxAffineMatrix2D::Rotate(wxDouble ccRadians)
+{
+ wxDouble c = cos(ccRadians);
+ wxDouble s = sin(ccRadians);
+
+ wxDouble e11 = c*m_11 - s*m_21;
+ wxDouble e12 = c*m_12 - s*m_22;
+ m_21 = s*m_11 + c*m_21;
+ m_22 = s*m_12 + c*m_22;
+ m_11 = e11;
+ m_12 = e12;
+}
+
+//
+// apply the transforms
+//
+
+// applies that matrix to the point
+// | m_11 m_12 0 |
+// | src.m_x src._my 1 | x | m_21 m_22 0 |
+// | m_tx m_ty 1 |
+wxPoint2DDouble
+wxAffineMatrix2D::DoTransformPoint(const wxPoint2DDouble& src) const
+{
+ if ( IsIdentity() )
+ return src;
+
+ return wxPoint2DDouble(src.m_x * m_11 + src.m_y * m_21 + m_tx,
+ src.m_y * m_12 + src.m_y * m_22 + m_ty);
+}
+
+// applies the matrix except for translations
+// | m_11 m_12 0 |
+// | src.m_x src._my 0 | x | m_21 m_22 0 |
+// | m_tx m_ty 1 |
+wxPoint2DDouble
+wxAffineMatrix2D::DoTransformDistance(const wxPoint2DDouble& src) const
+{
+ if ( IsIdentity() )
+ return src;
+
+ return wxPoint2DDouble(src.m_x * m_11 + src.m_y * m_21,
+ src.m_y * m_12 + src.m_y * m_22);
+}
+
+bool wxAffineMatrix2D::IsIdentity() const
+{
+ return m_11 == 1 && m_12 == 0 &&
+ m_21 == 0 && m_22 == 1 &&
+ m_tx == 0 && m_ty == 0;
+}