├── icons ├── icon.jpg ├── favicon.png └── silk │ ├── shading.xpm │ ├── shape_triangle.xpm │ ├── shape_final_triangle.xpm │ ├── shape_post_triangle.xpm │ ├── cross.xpm │ ├── page_white.xpm │ ├── color_swatch.xpm │ ├── shape_move_forwards.xpm │ ├── bullet_arrow_up.xpm │ ├── bullet_arrow_down.xpm │ ├── bullet_arrow_left.xpm │ ├── bullet_arrow_right.xpm │ ├── bullet_black.xpm │ ├── arrow_redo.xpm │ ├── arrow_inout.xpm │ ├── shape_move_front.xpm │ ├── star.xpm │ ├── bullet_toggle_minus.xpm │ ├── application.xpm │ ├── arrow_out.xpm │ └── arrow_rotate_clockwise.xpm ├── ts ├── qosmic_cs.qm ├── qosmic_de.qm ├── qosmic_fr.qm └── qosmic_ru.qm ├── scripts ├── sheep-loop.lua ├── rotate-palette.lua ├── sheep-loop-to-png.lua ├── normalize-densities.lua ├── sierpinsky.lua ├── batch-render-files.lua ├── pseudorandom-walk.lua ├── example.lua └── functions.lua ├── qosmic.desktop ├── dist ├── flam3-2.7.16.ebuild ├── qosmic-1.6.0.ebuild ├── qosmic-1.4.1.ebuild └── qosmic.spec ├── ui ├── mainpreviewwidget.ui ├── mainviewer.ui ├── statuswidget.ui ├── chaoswidget.ui ├── genomevectorlistmodelitemeditor.ui └── variationswidget.ui └── src ├── wheelvalueeditor.cpp ├── wheelvalueeditor.h ├── checkersbrush.h ├── checkersbrush.cpp ├── posttriangle.h ├── flamfileiconprovider.h ├── lua ├── luatype.h ├── luatype.cpp ├── highlighter.h ├── frame.h ├── luaeditor.h ├── luathreadadapter.h └── luathread.h ├── colorlabel.h ├── statuswidget.h ├── transformablegraphicsitem.cpp ├── coordinatemark.h ├── camerasettingswidget.h ├── flam3filestream.h ├── colorselector.h ├── snapslider.h ├── statuswidget.cpp ├── renderprogressdialog.h ├── adjustscenewidget.h ├── directorylistview.h ├── colorbalancewidget.h ├── gradientlistmodel.h ├── qosmicwidget.h ├── qosmicwidget.cpp ├── transformablegraphicsitem.h ├── selecttrianglewidget.h ├── renderdialog.h ├── colorselector.cpp ├── qosmic.h ├── genomecolorselector.h ├── intvalueeditor.h ├── basistriangle.h ├── doublevalueeditor.h ├── coordinatemark.cpp ├── imgsettingswidget.h ├── viewerpresetswidget.h ├── colorsettingswidget.h ├── nodeitem.h ├── colordialog.h ├── variationswidget.h ├── undoring.h ├── trianglecoordswidget.h ├── posttriangle.cpp ├── viewerpresetsmodel.h ├── colorlabel.cpp ├── mainpreviewwidget.h ├── triangleselection.h ├── selectgenomewidget.h ├── snapslider.cpp ├── chaoswidget.h ├── editmodeselectorwidget.h ├── transformablegraphicsguide.h ├── scripteditwidget.h ├── renderprogressdialog.cpp └── gradientlistmodel.cpp /icons/icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitsed/qosmic/HEAD/icons/icon.jpg -------------------------------------------------------------------------------- /icons/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitsed/qosmic/HEAD/icons/favicon.png -------------------------------------------------------------------------------- /ts/qosmic_cs.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitsed/qosmic/HEAD/ts/qosmic_cs.qm -------------------------------------------------------------------------------- /ts/qosmic_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitsed/qosmic/HEAD/ts/qosmic_de.qm -------------------------------------------------------------------------------- /ts/qosmic_fr.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitsed/qosmic/HEAD/ts/qosmic_fr.qm -------------------------------------------------------------------------------- /ts/qosmic_ru.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitsed/qosmic/HEAD/ts/qosmic_ru.qm -------------------------------------------------------------------------------- /scripts/sheep-loop.lua: -------------------------------------------------------------------------------- 1 | -- 2 | -- Electric sheep looping animation script. 3 | -- Rotate each non-symmetry transform around the origin and render a preview. 4 | -- 5 | 6 | GENOME_IDX = 1 -- animate the genome at this index 7 | 8 | g = frame:get_genome(GENOME_IDX) 9 | 10 | while true do 11 | for i = 1, g:num_xforms() do 12 | local xf = g:get_xform(i) 13 | if xf:animate() > 0.0 then 14 | xf:rotate(-4.0, 0, 0); 15 | end 16 | end 17 | frame:render(GENOME_IDX) 18 | end 19 | -------------------------------------------------------------------------------- /qosmic.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Name=Qosmic 5 | GenericName=Flam3 Fractal Editor 6 | GenericName[ru]=Редактор фракталов Flam3 7 | GenericName[cs]=Editor fraktálů Flam3 8 | Comment=A cosmic recursive flame fractal editor written in Qt 9 | Comment[ru]=Рекурсивный фрактальный редактор 10 | Comment[cs]=Světový rekurzivní plamenný fraktálový editor napsaný v Qt 11 | Exec=qosmic 12 | Icon=qosmicicon 13 | Terminal=false 14 | Categories=Qt;KDE;Graphics; 15 | -------------------------------------------------------------------------------- /scripts/rotate-palette.lua: -------------------------------------------------------------------------------- 1 | -- This script simply rotates the genome color palette. 2 | 3 | gid = 1 -- rotate the palette for this genome 4 | step = 4 -- step over this many palette entries each loop 5 | 6 | gen = frame:get_genome(gid) 7 | while true do 8 | r, g, b = gen:palette( (1 + step) % 255 ) 9 | 10 | for n = 2, 256 do 11 | local r, g, b = gen:palette( (n + step) % 255 ) 12 | gen:palette(n - 1, r, g, b) 13 | end 14 | gen:palette(256, r, g, b) 15 | 16 | frame:render(gid) 17 | end 18 | -------------------------------------------------------------------------------- /scripts/sheep-loop-to-png.lua: -------------------------------------------------------------------------------- 1 | -- Rotate each transform around the origin and render to 2 | -- png files. The png files can be combined into a movie. 3 | g = frame:get_genome() 4 | 5 | n=10 6 | 7 | while true do 8 | local name = "/tmp/flam-img0" .. n .. ".png" 9 | 10 | for i = 0, g:num_xforms() - 1 do 11 | local xf = g:get_xform(i) 12 | if xf:symmetry() == 0.0 then 13 | xf:rotate(-4.0, 0, 0); 14 | end 15 | end 16 | print("rendering " .. name) 17 | frame:render(0, name) 18 | n = n+1 19 | end 20 | 21 | -------------------------------------------------------------------------------- /scripts/normalize-densities.lua: -------------------------------------------------------------------------------- 1 | -- This script will normalize the xform densities to one. 2 | -- Running the script will have no effect on the flam3 image, 3 | -- since the densities are relative probabilities. 4 | sumq = 0 5 | g = frame:get_genome() 6 | for it = 0, g:num_xforms() - 1 do 7 | local xf = g:get_xform(it) 8 | sumq = sumq + xf:density()^2 9 | end 10 | 11 | sumq = math.sqrt(sumq) 12 | 13 | for it = 0, g:num_xforms() - 1 do 14 | local xf = g:get_xform(it) 15 | xf:density(xf:density() / sumq) 16 | end 17 | -------------------------------------------------------------------------------- /scripts/sierpinsky.lua: -------------------------------------------------------------------------------- 1 | -- this script generates a sierpinski gasket 2 | 3 | g = frame:get_genome(); 4 | g:clear_xforms(); 5 | 6 | g:width(640); 7 | g:height(480); 8 | g:scale(240); 9 | g:center(1.80, -0.20); 10 | 11 | xf = g:add_xform(); 12 | xf:scale(0.5); 13 | xf = g:add_xform(); 14 | xf:translate(1.28, 0); 15 | xf:scale(0.5) 16 | xf = g:add_xform(); 17 | xf:translate(0.64, -0.8); 18 | xf:scale(0.5); 19 | 20 | nxforms = g:num_xforms(); 21 | for i = 0, nxforms - 1 do 22 | local xf = g:get_xform(i); 23 | xf:density(1 / nxforms); 24 | xf:color(i / (nxforms - 1)); 25 | xf:var(LINEAR, 1.0) 26 | end 27 | 28 | frame:render() 29 | -------------------------------------------------------------------------------- /dist/flam3-2.7.16.ebuild: -------------------------------------------------------------------------------- 1 | # Copyright 1999-2008 Gentoo Foundation 2 | # Distributed under the terms of the GNU General Public License v2 3 | # $Header: $ 4 | 5 | inherit eutils 6 | 7 | DESCRIPTION="Tools and a library for creating flame fractal images" 8 | HOMEPAGE="http://flam3.com/" 9 | SRC_URI="${HOMEPAGE}/${P}.tar.gz" 10 | 11 | LICENSE="GPL-2" 12 | SLOT="0" 13 | KEYWORDS="~amd64" 14 | IUSE="" 15 | 16 | DEPEND="dev-libs/libxml2 17 | media-libs/libpng 18 | media-libs/jpeg 19 | !<=x11-misc/electricsheep-2.6.8-r1" 20 | RDEPEND="${DEPEND}" 21 | 22 | src_install() { 23 | emake install DESTDIR="${D}" || die "emake install failed" 24 | dodoc README.txt *.flam3 || die "dodoc failed" 25 | } 26 | 27 | -------------------------------------------------------------------------------- /dist/qosmic-1.6.0.ebuild: -------------------------------------------------------------------------------- 1 | # Copyright 1999-2016 Gentoo Foundation 2 | # Distributed under the terms of the GNU General Public License v2 3 | # $Id$ 4 | 5 | EAPI=4 6 | 7 | inherit qmake-utils 8 | 9 | DESCRIPTION="A cosmic recursive flame fractal editor" 10 | HOMEPAGE="https://github.com/bitsed/qosmic" 11 | SRC_URI="https://github.com/bitsed/qosmic/archive/v${PV}.tar.gz -> ${P}.tar.gz" 12 | 13 | LICENSE="GPL-3" 14 | SLOT="0" 15 | KEYWORDS="~amd64" 16 | IUSE="" 17 | 18 | RDEPEND="dev-lang/lua:5.2 19 | dev-qt/qtgui:5 20 | >=media-gfx/flam3-3.1.1" 21 | DEPEND="${RDEPEND} 22 | virtual/pkgconfig" 23 | 24 | DOCS="changes.txt README README-LUA" 25 | 26 | src_prepare() { 27 | eqmake5 ROOT=${D} 28 | } 29 | -------------------------------------------------------------------------------- /scripts/batch-render-files.lua: -------------------------------------------------------------------------------- 1 | -- This script scans the directory given by path for flam3 xml files without 2 | -- a cooresponding png image file, and then generates one. It requires 3 | -- luafilesystem (luaforge.net). 4 | 5 | require"lfs" 6 | path="/home/user/flam3 images" 7 | for file in lfs.dir(path) do 8 | if string.match(file, "\.flam3$") then 9 | local f = path..'/'..file 10 | local attr = lfs.attributes(f) 11 | 12 | if attr.mode == "file" then 13 | i = string.gsub(f, "\.flam3$", ".png") 14 | local imgattr = lfs.attributes(i) 15 | if (imgattr == nil) then 16 | print ('rendering ' .. i) 17 | frame:load(f) 18 | frame:render(0, i) 19 | end 20 | 21 | end 22 | 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /scripts/pseudorandom-walk.lua: -------------------------------------------------------------------------------- 1 | -- 2 | -- Perform a random walk on the nodes of each non-symmetry transform. 3 | -- 4 | PI=3.14159265434 5 | LENGTH_MULT=0.01 6 | 7 | g = frame:get_genome() 8 | 9 | while true do 10 | for i = 0, g:num_xforms() - 1 do 11 | local xf = g:get_xform(i) 12 | if xf:symmetry() == 0.0 then 13 | xf:rotate(-4.0, 0, 0); 14 | local x, y 15 | local a = math.random() * PI 16 | local l = math.random() * LENGTH_MULT 17 | dy = l*math.sin(a) 18 | dx = l*math.cos(a) 19 | x, y = xf:a() 20 | x, y = x+dx, y+dy 21 | xf:a(x, y) 22 | 23 | a = math.random() * PI 24 | l = math.random() * LENGTH_MULT 25 | dy = l*math.sin(a) 26 | dx = l*math.cos(a) 27 | x, y = xf:b() 28 | x, y = x+dx, y+dy 29 | xf:b(x, y) 30 | 31 | a = math.random() * PI 32 | l = math.random() * LENGTH_MULT 33 | dy = l*math.sin(a) 34 | dx = l*math.cos(a) 35 | x, y = xf:c() 36 | x, y = x+dx, y+dy 37 | xf:c(x, y) 38 | end 39 | end 40 | frame:render() 41 | end 42 | 43 | -------------------------------------------------------------------------------- /dist/qosmic-1.4.1.ebuild: -------------------------------------------------------------------------------- 1 | # Copyright 1999-2008 Gentoo Foundation 2 | # Distributed under the terms of the GNU General Public License v2 3 | # $Header: $ 4 | 5 | EAPI=1 6 | 7 | inherit eutils qt4 8 | 9 | DESCRIPTION="A cosmic recursive flame fractal editor written in Qt" 10 | HOMEPAGE="http://qosmic.googlecode.com" 11 | SRC_URI="${HOMEPAGE}/files/${P}.tar.bz2" 12 | 13 | LICENSE="GPL-2" 14 | SLOT="0" 15 | KEYWORDS="~amd64" 16 | IUSE="" 17 | 18 | DEPEND="|| ( x11-libs/qt-gui:4 =x11-libs/qt-4.3* ) 19 | >=media-gfx/flam3-2.7.16 20 | dev-libs/libxml2 21 | media-libs/libpng 22 | media-libs/jpeg 23 | dev-lang/lua" 24 | RDEPEND="${DEPEND}" 25 | 26 | S=${WORKDIR}/${PN} 27 | 28 | src_compile() { 29 | eqmake4 || die "qmake failed" 30 | emake || die "make failed" 31 | } 32 | 33 | src_install() { 34 | doicon icons/qosmicicon.xpm || die "doicon failed" 35 | dobin qosmic || die "dobin failed" 36 | dodoc README README-LUA || die "dodoc failed" 37 | make_desktop_entry qosmic "Qosmic" qosmicicon.xpm "KDE;Qt;Graphics" 38 | } 39 | 40 | -------------------------------------------------------------------------------- /ui/mainpreviewwidget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainPreviewWidget 4 | 5 | 6 | 7 | 0 8 | 0 9 | 162 10 | 132 11 | 12 | 13 | 14 | Preview 15 | 16 | 17 | 18 | 1 19 | 20 | 21 | 22 | 23 | 24 | 1 25 | 1 26 | 27 | 28 | 29 | Qt::LeftToRight 30 | 31 | 32 | QFrame::StyledPanel 33 | 34 | 35 | QFrame::Sunken 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /dist/qosmic.spec: -------------------------------------------------------------------------------- 1 | Name: qosmic 2 | Version: 1.6.0 3 | Release: 1%{?dist} 4 | Summary: A flam3 fractal editor 5 | 6 | Group: Applications/Multimedia 7 | License: GPLv3 8 | URL: http://github.com/bitsed/qosmic 9 | Source0: qosmic-%{version}.tar.bz2 10 | BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) 11 | 12 | BuildRequires: flam3-devel >= 3.1.1 13 | BuildRequires: qt-devel >= 5.5 14 | BuildRequires: lua-devel >= 5.2 15 | Requires: flam3 >= 3.1.1 16 | Requires: qt >= 5.5 17 | Requires: lua >= 5.2 18 | 19 | %description 20 | A graphical interface to create, edit, and render flam3 fractal images. 21 | 22 | %prep 23 | %setup -q 24 | 25 | 26 | %build 27 | %{_qt4_qmake} 28 | make %{?_smp_mflags} 29 | 30 | 31 | %install 32 | rm -rf $RPM_BUILD_ROOT 33 | make install INSTALL_ROOT=$RPM_BUILD_ROOT 34 | 35 | 36 | %clean 37 | rm -rf $RPM_BUILD_ROOT 38 | 39 | 40 | %files 41 | %defattr(-,root,root,-) 42 | %doc README README-LUA changes.txt COPYING scripts/ 43 | %{_bindir}/%{name} 44 | %{_pixmapsdir}/qosmicicon.xpm 45 | %{_desktopdir}/%{name}.desktop 46 | 47 | 48 | %changelog 49 | * Thu Mar 10 2011 Nathaniel Clark - 1.4.8-1 50 | - Initial Spec file 51 | * Thu Jul 21 2011 David Bitseff - 1.5.0-1 52 | - Version 1.5.0 Spec file 53 | * Thu Jun 23 2016 David Bitseff - 1.6.0-1 54 | - Version 1.6.0 Spec file 55 | -------------------------------------------------------------------------------- /scripts/example.lua: -------------------------------------------------------------------------------- 1 | -- Here are some examples of how to use lua scripts with qosmic. Be sure to 2 | -- also examine the functions.lua script. 3 | 4 | -- load and save functions 5 | -- frame:load('sparkler.flam3') 6 | -- frame:save('sparkler.flam3') 7 | 8 | g = frame:get_genome() ; -- set g to refer to the first genome 9 | r = frame:get_genome(1) ; -- both g and r point to the same genome 10 | n = frame:get_genome(2) ; -- the second genome, create a new genome if necessary 11 | 12 | xf = g:get_xform(1) ; -- set xf to point at the first xform in r 13 | density = xf:density() -- get the density 14 | xf:density(1.0 + density) ; -- add one to the xform density 15 | xf:var(LINEAR, 2.0) ; -- set the linear variation to 2.0 16 | (a, b, c) = xf:a(), xf:b(), xf:c() ; -- coordinates 17 | (x,y) = xf:pos(-1.0,1.2) ; -- position the center of the triangle at (-1.0, 1.2) 18 | 19 | xf_2 = g:add_xform() ; -- set xf_2 to point at a new xform 20 | xf_2:translate(1.0, 0.0) ; -- move the xform 21 | xf_2:rotate(60) ; -- rotate (in degrees) the xform 22 | 23 | ngenomes = frame:num_genomes() ; 24 | 25 | frame:render() ; -- render the first genome, and update the preview image 26 | frame:render(2, "image.png") ; -- render the second genome, and save to a file 27 | frame:render(n) ; -- render the second genome 28 | 29 | frame:copy_genome(1, 2) ; -- copy genome 1 to genome 2 30 | frame:del_genome(2) ; -- delete genome 2 31 | -------------------------------------------------------------------------------- /icons/silk/shading.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *shading[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 2 1", 5 | " c #6C6C9A9AC7C7", 6 | ". c None", 7 | /* pixels */ 8 | ".... ... ... ... .... ...", 9 | "... ... ... ... ... ....", 10 | ".. ... ... ... .... ....", 11 | " .. .. .. .. ....", 12 | " ... ... ... ... .... ", 13 | " .. .. .. .. ... ", 14 | "... ... ... ... ... ..", 15 | ".. .. .. .. .. ..", 16 | ".. ... ... ... ... ....", 17 | " .. .. .. .. .. ", 18 | " ... ... ... ... .... ", 19 | " .. .. .. .. .. ", 20 | "... ... ... ... ... ..", 21 | ".. .. .. .. .. ..", 22 | ".. ... ... ... ... ....", 23 | " .. .. .. .. .. ", 24 | " ... ... ... ... .... ", 25 | " .. .. .. .. .. ", 26 | "... ... ... ... ... ..", 27 | ".. .. .. .. .. ..", 28 | ".. ... ... ... ... ....", 29 | " .. .. .. .. .. ", 30 | " ... ... ... ... .... ", 31 | " .. .. .. .. .. ", 32 | "... ... ... ... ... ..", 33 | "... .. .. .. .. ..", 34 | ".. ... ... ... ... ....", 35 | ". .. .. .. .. ... ", 36 | "...... ... ... ... ......", 37 | "..... ... ... ... ......", 38 | ".... ... ... .... ........", 39 | ".... ... ... ... ... ..." 40 | }; 41 | -------------------------------------------------------------------------------- /src/wheelvalueeditor.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #include "wheelvalueeditor.h" 19 | 20 | bool WheelValueEditor::WHEEL_EVENTS_ENABLED = true; 21 | -------------------------------------------------------------------------------- /src/wheelvalueeditor.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef WHEELVALUEEDITOR_H 19 | #define WHEELVALUEEDITOR_H 20 | 21 | class WheelValueEditor 22 | { 23 | public: 24 | static bool WHEEL_EVENTS_ENABLED; 25 | }; 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /src/checkersbrush.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef CHECKERSBRUSH_H 20 | #define CHECKERSBRUSH_H 21 | 22 | #include 23 | 24 | class CheckersBrush : public QBrush 25 | { 26 | public: 27 | explicit CheckersBrush(int); 28 | }; 29 | 30 | #endif // CHECKERSBRUSH_H 31 | -------------------------------------------------------------------------------- /src/checkersbrush.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #include 20 | #include 21 | 22 | #include "checkersbrush.h" 23 | 24 | 25 | CheckersBrush::CheckersBrush(int d) : QBrush() 26 | { 27 | QImage img(d, d, QImage::Format_RGB32); 28 | QPainter p(&img); 29 | p.fillRect(0, 0, d, d, Qt::white); 30 | p.fillRect(0, 0, d/2, d/2, Qt::black); 31 | p.fillRect(d/2, d/2, d, d, Qt::black); 32 | setTexture(QPixmap::fromImage(img)); 33 | } 34 | -------------------------------------------------------------------------------- /ui/mainviewer.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainViewer 4 | 5 | 6 | 7 | 0 8 | 0 9 | 250 10 | 200 11 | 12 | 13 | 14 | true 15 | 16 | 17 | flame viewer 18 | 19 | 20 | 21 | 4 22 | 23 | 24 | 25 | 26 | 27 | 0 28 | 0 29 | 30 | 31 | 32 | true 33 | 34 | 35 | QFrame::StyledPanel 36 | 37 | 38 | QFrame::Sunken 39 | 40 | 41 | Qt::ScrollBarAlwaysOff 42 | 43 | 44 | Qt::ScrollBarAlwaysOff 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | MainViewerGraphicsView 53 | QGraphicsView 54 |
mainviewer.h
55 |
56 |
57 | 58 | 59 |
60 | -------------------------------------------------------------------------------- /src/posttriangle.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef POSTTRIANGLE_H 19 | #define POSTTRIANGLE_H 20 | 21 | 22 | #include "triangle.h" 23 | 24 | class PostTriangle : public Triangle 25 | { 26 | 27 | public: 28 | PostTriangle(FigureEditor* c, flam3_xform* x, BasisTriangle* b); 29 | void resetPosition(); 30 | int type() const; 31 | void basisScaledSlot(); 32 | void coordsToXForm(); 33 | 34 | enum { Type = UserType + 4 }; 35 | 36 | }; 37 | 38 | #endif 39 | 40 | -------------------------------------------------------------------------------- /src/flamfileiconprovider.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef FLAMFILEICONPROVIDER_H 19 | #define FLAMFILEICONPROVIDER_H 20 | 21 | #include 22 | 23 | class FlamFileIconProvider : public QFileIconProvider 24 | { 25 | QDir icons_dir; 26 | bool has_icons; 27 | 28 | public: 29 | FlamFileIconProvider(); 30 | ~FlamFileIconProvider(); 31 | 32 | QIcon icon(const QFileInfo& info) const; 33 | QIcon icon(IconType type) const; 34 | QString type(const QFileInfo& info) const; 35 | }; 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /src/lua/luatype.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef LUALUATYPE_H 19 | #define LUALUATYPE_H 20 | 21 | #include "genomevector.h" 22 | 23 | namespace Lua 24 | { 25 | 26 | class LuaThreadAdapter; 27 | class LuaType 28 | { 29 | protected: 30 | LuaThreadAdapter* m_adapter; 31 | 32 | public: 33 | LuaType(); 34 | LuaType(LuaThreadAdapter*); 35 | ~LuaType(); 36 | void setContext(LuaThreadAdapter*); 37 | LuaThreadAdapter* context() const; 38 | GenomeVector* genomes() const; 39 | }; 40 | 41 | } 42 | 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /src/colorlabel.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef COLORLABEL_H 20 | #define COLORLABEL_H 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | class ColorLabel : public QLabel 27 | { 28 | Q_OBJECT 29 | 30 | public: 31 | ColorLabel(QWidget* parent=0); 32 | void setColor(QColor); 33 | void mousePressEvent (QMouseEvent*); 34 | 35 | signals: 36 | void colorSelected(QColor); 37 | void undoStateSignal(); 38 | 39 | private: 40 | QColor lastcolor; 41 | }; 42 | 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /ui/statuswidget.ui: -------------------------------------------------------------------------------- 1 | 2 | StatusWidget 3 | 4 | 5 | 6 | 0 7 | 0 8 | 272 9 | 22 10 | 11 | 12 | 13 | status 14 | 15 | 16 | 17 | 0 18 | 19 | 20 | 0 21 | 22 | 23 | 0 24 | 25 | 26 | 0 27 | 28 | 29 | 0 30 | 31 | 32 | 0 33 | 34 | 35 | 36 | 37 | 38 | 2 39 | 22 40 | 41 | 42 | 43 | 44 | 300 45 | 22 46 | 47 | 48 | 49 | QFrame::NoFrame 50 | 51 | 52 | QFrame::Sunken 53 | 54 | 55 | Some status text. .. . . . 56 | 57 | 58 | Qt::PlainText 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /src/statuswidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef STATUSWIDGET_H 19 | #define STATUSWIDGET_H 20 | 21 | #include 22 | #include 23 | 24 | #include "ui_statuswidget.h" 25 | #include "renderthread.h" 26 | 27 | class StatusWidget : public QWidget, private Ui::StatusWidget 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | StatusWidget(QWidget* parent); 33 | ~StatusWidget(); 34 | 35 | public slots: 36 | void setRenderStatus(RenderStatus*); 37 | 38 | 39 | protected: 40 | void resizeEvent(QResizeEvent*); 41 | }; 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /icons/silk/shape_triangle.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * shape_triangle_xpm[] = { 3 | "32 32 27 1", 4 | " c None", 5 | ". c #7DA5E1", 6 | "+ c #8CB3E6", 7 | "@ c #7FA8E3", 8 | "# c #76A0DE", 9 | "$ c #9DBCE9", 10 | "% c #94B4E5", 11 | "& c #99B9E8", 12 | "* c #739BDD", 13 | "= c #98B7E7", 14 | "- c #8CACE2", 15 | "; c #7DA1DF", 16 | "> c #7A9DDD", 17 | ", c #6E98DC", 18 | "' c #6B93DA", 19 | ") c #85ABE3", 20 | "! c #85A6E0", 21 | "~ c #90AFE4", 22 | "{ c #7097DB", 23 | "] c #6690D8", 24 | "^ c #648ED8", 25 | "/ c #84A5DF", 26 | "( c #638CD7", 27 | "_ c #5F88D5", 28 | ": c #688FD7", 29 | "< c #5A84D4", 30 | "[ c #688FD8", 31 | " ", 32 | " ", 33 | " ", 34 | " ", 35 | " . ", 36 | " .. ", 37 | " +@# ", 38 | " $%@# ", 39 | " &&+.* ", 40 | " &==-;* ", 41 | " ===%-;* ", 42 | " ==%%%->, ", 43 | " =%%%%%-*' ", 44 | " =%%%%%%)*' ", 45 | " %%%%%%%%!*' ", 46 | " %%%%%%~--!{] ", 47 | " %%%%%~----!{^ ", 48 | " %%%%~~-----/'( ", 49 | " %%%%--------/'( ", 50 | " %%%%---------;'( ", 51 | " %%~--------!!!>]_ ", 52 | " %%~--------!!!/>:_ ", 53 | " %~--------!!!///>:< ", 54 | " %~-------!!!!!///>^< ", 55 | " %~-------!!!!!////>(< ", 56 | " ;!!!!//;;;;>>>>>>>>'(< ", 57 | " ,{{{,,'''''][:^^(((((<< ", 58 | " '']]]^^((((___<<<<<<<<<< ", 59 | " ", 60 | " ", 61 | " ", 62 | " "}; 63 | -------------------------------------------------------------------------------- /src/transformablegraphicsitem.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #include "transformablegraphicsitem.h" 20 | #include "transformablegraphicsguide.h" 21 | 22 | TransformableGraphicsItem::TransformableGraphicsItem() : m_guide(0) 23 | { 24 | } 25 | 26 | void TransformableGraphicsItem::setGraphicsGuide(TransformableGraphicsGuide* guide) 27 | { 28 | m_guide = guide; 29 | if (guide) 30 | guide->setParentItem(dynamic_cast(this)); 31 | } 32 | 33 | TransformableGraphicsGuide* TransformableGraphicsItem::graphicsGuide() const 34 | { 35 | return m_guide; 36 | } 37 | -------------------------------------------------------------------------------- /icons/silk/shape_final_triangle.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * shape_final_triangle_xpm[] = { 3 | "32 32 28 1", 4 | " c None", 5 | ". c #7DA5E1", 6 | "+ c #8CB3E6", 7 | "@ c #7FA8E3", 8 | "# c #76A0DE", 9 | "$ c #9DBCE9", 10 | "% c #94B4E5", 11 | "& c #99B9E8", 12 | "* c #739BDD", 13 | "= c #98B7E7", 14 | "- c #8CACE2", 15 | "; c #7DA1DF", 16 | "> c #000000", 17 | ", c #7A9DDD", 18 | "' c #6E98DC", 19 | ") c #6B93DA", 20 | "! c #85ABE3", 21 | "~ c #85A6E0", 22 | "{ c #90AFE4", 23 | "] c #7097DB", 24 | "^ c #6690D8", 25 | "/ c #648ED8", 26 | "( c #84A5DF", 27 | "_ c #638CD7", 28 | ": c #5F88D5", 29 | "< c #688FD7", 30 | "[ c #5A84D4", 31 | "} c #688FD8", 32 | " ", 33 | " ", 34 | " ", 35 | " ", 36 | " . ", 37 | " .. ", 38 | " +@# ", 39 | " $%@# ", 40 | " &&+.* ", 41 | " &==-;* ", 42 | " >>>>>>>>=%-;* ", 43 | " >>>>>>>>%%-,' ", 44 | " >> =%%%%%-*) ", 45 | " >> =%%%%%%!*) ", 46 | " >>%%%%%%%%~*) ", 47 | " >>>>>>>{--~]^ ", 48 | " >>>>>>>---~]/ ", 49 | " %>>%{{-----()_ ", 50 | " %%>>--------()_ ", 51 | " %%%>>--------;)_ ", 52 | " %%{->>-----~~~,^: ", 53 | " %%{-->>----~~~(,<: ", 54 | " %{---->>--~~~(((,<[ ", 55 | " %{-------~~~~~(((,/[ ", 56 | " %{-------~~~~~((((,_[ ", 57 | " ;~~~~((;;;;,,,,,,,,)_[ ", 58 | " ']]]'')))))^}. * 17 | ***************************************************************************/ 18 | #ifndef COORDINATEMARK_H 19 | #define COORDINATEMARK_H 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | class CoordinateMark : public QGraphicsPolygonItem 27 | { 28 | QPainterPath m_path; 29 | 30 | public: 31 | enum { Type = UserType + 6 }; 32 | 33 | CoordinateMark(QGraphicsItem* parent =0); 34 | int type() const; 35 | QPointF center() const; 36 | void centerOn(const QPointF&); 37 | 38 | protected: 39 | void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget* =0); 40 | }; 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /src/lua/luatype.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #include "luatype.h" 19 | #include "luathreadadapter.h" 20 | 21 | namespace Lua 22 | { 23 | 24 | LuaType::LuaType() 25 | : m_adapter(0) 26 | { 27 | } 28 | 29 | LuaType::LuaType(LuaThreadAdapter* value) 30 | : m_adapter(value) 31 | { 32 | } 33 | 34 | 35 | LuaType::~LuaType() 36 | { 37 | } 38 | 39 | 40 | LuaThreadAdapter* LuaType::context() const 41 | { 42 | return m_adapter; 43 | } 44 | 45 | 46 | void LuaType::setContext(LuaThreadAdapter* value) 47 | { 48 | m_adapter = value; 49 | } 50 | 51 | 52 | GenomeVector* LuaType::genomes() const 53 | { 54 | return m_adapter->genomeVector(); 55 | } 56 | 57 | } 58 | 59 | -------------------------------------------------------------------------------- /src/camerasettingswidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef CAMERASETTINGSWIDGET_H 20 | #define CAMERASETTINGSWIDGET_H 21 | 22 | #include 23 | 24 | #include "ui_camerasettingswidget.h" 25 | #include "genomevector.h" 26 | 27 | class CameraSettingsWidget : public QWidget, private Ui::CameraSettingsWidget 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | CameraSettingsWidget(GenomeVector*, QWidget* parent=0); 33 | void reset(); 34 | 35 | signals: 36 | void dataChanged(); 37 | void undoStateSignal(); 38 | 39 | public slots: 40 | void fieldEditedAction(); 41 | void updateFormData(); 42 | 43 | private: 44 | GenomeVector* genome; 45 | }; 46 | 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /src/flam3filestream.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef FLAM3FILESTREAM_H 19 | #define FLAM3FILESTREAM_H 20 | 21 | #include 22 | 23 | #include "genomevector.h" 24 | 25 | class Flam3FileStream 26 | { 27 | QFile* m_file; 28 | 29 | public: 30 | Flam3FileStream(QFile*); 31 | bool read(GenomeVector*); 32 | bool read(flam3_genome**, int*); 33 | bool write(GenomeVector*); 34 | bool write(flam3_genome*, int); 35 | void setFile(QFile*); 36 | QFile* file() const; 37 | Flam3FileStream& operator>>(GenomeVector*); 38 | Flam3FileStream& operator<<(GenomeVector*); 39 | 40 | static void autoSave(GenomeVector*, int =GenomeVector::AlwaysSave); 41 | }; 42 | 43 | #endif // FLAM3FILESTREAM_H 44 | -------------------------------------------------------------------------------- /src/colorselector.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef COLORSELECTOR_H 20 | #define COLORSELECTOR_H 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | 27 | class ColorSelector : public QLabel 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | ColorSelector(QWidget* parent=0); 33 | void mousePressEvent(QMouseEvent*); 34 | void mouseMoveEvent(QMouseEvent*); 35 | void mouseReleaseEvent(QMouseEvent*); 36 | void setSelectedIndex(QPoint); 37 | QPoint selectedIndex(); 38 | 39 | signals: 40 | void colorSelected(QPoint); 41 | 42 | protected: 43 | virtual void repaintLabel(); 44 | QPoint last_pos; 45 | QImage background; 46 | }; 47 | 48 | 49 | 50 | #endif 51 | -------------------------------------------------------------------------------- /src/snapslider.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef SNAPSLIDER_H 19 | #define SNAPSLIDER_H 20 | 21 | #include 22 | 23 | class SnapSlider : public QSlider 24 | { 25 | Q_OBJECT 26 | 27 | public: 28 | SnapSlider(QWidget* parent=0); 29 | int selectedValue(); 30 | void setSnap(int value); 31 | void setToSnap(); 32 | int snap(); 33 | int dx(); 34 | 35 | signals: 36 | void valueSelected(int); 37 | void undoStateSignal(); 38 | 39 | private slots: 40 | void sliderReleasedAction(); 41 | void rangeChangedAction(int, int); 42 | void sliderChangedAction(int); 43 | 44 | private: 45 | int m_selected_value; 46 | int m_last_value; 47 | int m_dx; 48 | int m_snap; 49 | }; 50 | 51 | #endif 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/statuswidget.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #include 19 | 20 | #include "statuswidget.h" 21 | 22 | StatusWidget::StatusWidget(QWidget* parent) 23 | : QWidget(parent) 24 | { 25 | setupUi(this); 26 | } 27 | 28 | StatusWidget::~StatusWidget() 29 | { 30 | } 31 | 32 | void StatusWidget::setRenderStatus(RenderStatus* state) 33 | { 34 | if (isVisible()) 35 | m_statusLabel->setText(state->getMessage()); 36 | } 37 | 38 | /*! 39 | \fn StatusWidget::resizeEvent(QResizeEvent* e) 40 | */ 41 | void StatusWidget::resizeEvent(QResizeEvent* e) 42 | { 43 | if (parent()->inherits("QDockWidget") 44 | && qobject_cast(parent())->isFloating()) 45 | m_statusLabel->setMaximumSize(e->size()); 46 | } 47 | 48 | -------------------------------------------------------------------------------- /src/renderprogressdialog.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef RENDERPROGRESSDIALOG_H 19 | #define RENDERPROGRESSDIALOG_H 20 | 21 | #include "ui_renderprogressdialog.h" 22 | #include "renderthread.h" 23 | #include "mainviewer.h" 24 | 25 | class RenderProgressDialog : public QDialog, private Ui::RenderProgressDialog 26 | { 27 | Q_OBJECT 28 | 29 | QLabel m_finishedLabel; 30 | RenderThread* m_rthread; 31 | bool m_showMainViewer; 32 | 33 | public: 34 | RenderProgressDialog(QWidget*, RenderThread*); 35 | ~RenderProgressDialog(); 36 | bool showMainViewer(); 37 | 38 | public slots: 39 | void setRenderStatus(RenderStatus*); 40 | 41 | private slots: 42 | void yesButtonPressedSlot(); 43 | }; 44 | 45 | 46 | 47 | #endif 48 | 49 | -------------------------------------------------------------------------------- /src/adjustscenewidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef ADJUSTSCENEWIDGET_H 20 | #define ADJUSTSCENEWIDGET_H 21 | 22 | #include "ui_adjustscenewidget.h" 23 | #include "xfedit.h" 24 | 25 | class AdjustSceneWidget : public QDialog, private Ui::AdjustSceneWidget 26 | { 27 | Q_OBJECT 28 | 29 | public: 30 | AdjustSceneWidget(FigureEditor*, QWidget* parent=0); 31 | 32 | protected slots: 33 | void toggleLabelsAction(bool); 34 | void toggleGridAction(bool); 35 | void gridColorSelectAction(); 36 | void toggleGuideAction(bool); 37 | void guideColorSelectAction(); 38 | void bgColorSelectAction(); 39 | void togglePreviewAction(bool); 40 | void previewUpdatedAction(); 41 | 42 | private: 43 | FigureEditor* editor; 44 | }; 45 | 46 | 47 | #endif 48 | 49 | -------------------------------------------------------------------------------- /src/directorylistview.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef DIRECTORYLISTVIEW_H 19 | #define DIRECTORYLISTVIEW_H 20 | 21 | #include 22 | #include 23 | #include 24 | 25 | #include "mainviewer.h" 26 | 27 | class DirectoryListView : public QListView 28 | { 29 | Q_OBJECT 30 | 31 | QModelIndex dragStartIndex; 32 | 33 | public: 34 | DirectoryListView(QWidget* parent=0); 35 | ~DirectoryListView(); 36 | 37 | public slots: 38 | void viewerResizedAction(const QSize&); 39 | 40 | protected: 41 | void startDrag(Qt::DropActions); 42 | void mousePressEvent(QMouseEvent*); 43 | void wheelEvent(QWheelEvent*); 44 | 45 | private: 46 | MainViewer* viewer; 47 | QImage viewerImage; 48 | QSize viewerSize; 49 | }; 50 | 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /src/colorbalancewidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef COLORBALANCEWIDGET_H 20 | #define COLORBALANCEWIDGET_H 21 | 22 | #include 23 | 24 | #include "ui_colorbalancewidget.h" 25 | #include "genomevector.h" 26 | 27 | class ColorBalanceWidget : public QWidget, private Ui::ColorBalanceWidget 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | ColorBalanceWidget(GenomeVector*, QWidget* parent=0); 33 | void updateFormData(); 34 | void reset(); 35 | 36 | signals: 37 | void dataChanged(); 38 | void paletteChanged(); 39 | 40 | protected slots: 41 | void fieldEditedAction(); 42 | void hueEditedAction(); 43 | void setImageFormat(int format); 44 | void setEarlyClip(bool); 45 | 46 | private: 47 | GenomeVector* genome; 48 | QList palette; 49 | }; 50 | 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /src/gradientlistmodel.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef GRADIENTLISTMODEL_H 20 | #define GRADIENTLISTMODEL_H 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | class GradientListModel : public QAbstractListModel 27 | { 28 | Q_OBJECT 29 | 30 | public: 31 | GradientListModel ( QObject *parent = 0 ); 32 | 33 | QVariant data ( const QModelIndex &index, int role = Qt::DisplayRole ) const; 34 | Qt::ItemFlags flags ( const QModelIndex &index ) const; 35 | bool removeRows ( int row, int count, const QModelIndex &parent=QModelIndex() ); 36 | int rowCount ( const QModelIndex &parent ) const; 37 | void addGradient ( const QPixmap &pixmap ); 38 | void clear(); 39 | 40 | private: 41 | QList pixmaps; 42 | }; 43 | 44 | 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /src/qosmicwidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef QOSMICWIDGET_H 20 | #define QOSMICWIDGET_H 21 | 22 | #include 23 | #include 24 | 25 | /** 26 | * This here is some magik to help subclassed objects find each other. It's 27 | * main use is to allow each xxxxWidget object instance access to the others. 28 | * Each subclassed instance needs to have a unique name or it will be clobbered. 29 | */ 30 | class QosmicWidget 31 | { 32 | static QMap widgets; 33 | QString myName; 34 | QosmicWidget(); 35 | 36 | public: 37 | QosmicWidget(QosmicWidget*, QString); 38 | virtual ~QosmicWidget(); 39 | template T* getWidget() const; 40 | void setWidget(const QString&, QosmicWidget*); 41 | QString qosmicWidgetName(); 42 | }; 43 | 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/qosmicwidget.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #include "qosmicwidget.h" 20 | #include "logger.h" 21 | 22 | QMap QosmicWidget::widgets; 23 | 24 | QosmicWidget::QosmicWidget() 25 | { 26 | } 27 | 28 | QosmicWidget::~QosmicWidget() 29 | { 30 | } 31 | 32 | QosmicWidget::QosmicWidget(QosmicWidget* parent, QString name) 33 | : myName(name) 34 | { 35 | logFine(QString("QosmicWidget::QosmicWidget : adding instance %1").arg(name)); 36 | setWidget(name, parent); 37 | } 38 | 39 | 40 | void QosmicWidget::setWidget(const QString& name, QosmicWidget* widget) 41 | { 42 | if (widgets.contains(name)) 43 | logWarn(QString("QosmicWidget::setWidget : clobbering widget '%1'").arg(name)); 44 | widgets[name] = widget; 45 | } 46 | 47 | QString QosmicWidget::qosmicWidgetName() 48 | { 49 | return myName; 50 | } 51 | 52 | -------------------------------------------------------------------------------- /src/transformablegraphicsitem.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef TRANSFORMABLE_H 19 | #define TRANSFORMABLE_H 20 | 21 | class TransformableGraphicsGuide; 22 | 23 | /** 24 | * An interface that accepts a GraphicsGuide decorator. 25 | * 26 | * It's also necessary for the child class to extend the QGraphicsItem 27 | * interface as well since the main purpose of this class is to handle 28 | * reparenting of the GraphicsGuide instance. 29 | * 30 | */ 31 | class TransformableGraphicsItem 32 | { 33 | protected: 34 | TransformableGraphicsGuide* m_guide; 35 | 36 | public: 37 | TransformableGraphicsItem(); 38 | virtual void setGraphicsGuide(TransformableGraphicsGuide*); 39 | TransformableGraphicsGuide* graphicsGuide() const; 40 | }; 41 | 42 | //-------------------------------------------------------------------------- 43 | 44 | #endif // TRANSFORMABLE_H 45 | -------------------------------------------------------------------------------- /icons/silk/shape_post_triangle.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * shape_post_triangle_xpm[] = { 3 | "32 32 43 1", 4 | " c None", 5 | ". c #7DA5E1", 6 | "+ c #8CB3E6", 7 | "@ c #7FA8E3", 8 | "# c #76A0DE", 9 | "$ c #9DBCE9", 10 | "% c #94B4E5", 11 | "& c #99B9E8", 12 | "* c #739BDD", 13 | "= c #98B7E7", 14 | "- c #8CACE2", 15 | "; c #7DA1DF", 16 | "> c #000000", 17 | ", c #576884", 18 | "' c #667C9E", 19 | ") c #7A9DDD", 20 | "! c #6E98DC", 21 | "~ c #829DC6", 22 | "{ c #354052", 23 | "] c #1F2631", 24 | "^ c #6B93DA", 25 | "/ c #89A7D4", 26 | "( c #050608", 27 | "_ c #85ABE3", 28 | ": c #8AA8D5", 29 | "< c #85A6E0", 30 | "[ c #87A5D2", 31 | "} c #374355", 32 | "| c #1F2531", 33 | "1 c #7097DB", 34 | "2 c #6690D8", 35 | "3 c #60769B", 36 | "4 c #648ED8", 37 | "5 c #060709", 38 | "6 c #202835", 39 | "7 c #62789E", 40 | "8 c #84A5DF", 41 | "9 c #638CD7", 42 | "0 c #90AFE4", 43 | "a c #5F88D5", 44 | "b c #688FD7", 45 | "c c #5A84D4", 46 | "d c #688FD8", 47 | " ", 48 | " ", 49 | " ", 50 | " ", 51 | " . ", 52 | " .. ", 53 | " +@# ", 54 | " $%@# ", 55 | " &&+.* ", 56 | " &==-;* ", 57 | " >>>>>>,==%-;* ", 58 | " >>>>>>>'%%-)! ", 59 | " >> ~{>]%%-*^ ", 60 | " >> =%/>(%%_*^ ", 61 | " >>%%%:>(%%<*^ ", 62 | " >>%%[}>|--<12 ", 63 | " >>>>>>>3--<14 ", 64 | " %>>>>567---8^9 ", 65 | " %%>>--------8^9 ", 66 | " %%%>>--------;^9 ", 67 | " %%0->>-----<<<)2a ", 68 | " %%0-->>----<<<8)ba ", 69 | " %0---->>--<<<888)bc ", 70 | " %0-------<<<<<888)4c ", 71 | " %0-------<<<<<8888)9c ", 72 | " ;<<<<88;;;;))))))))^9c ", 73 | " !111!!^^^^^2db4499999cc ", 74 | " ^^222449999aaacccccccccc ", 75 | " ", 76 | " ", 77 | " ", 78 | " "}; 79 | -------------------------------------------------------------------------------- /icons/silk/cross.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *cross[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 33 1", 5 | " c #E51B228B248D", 6 | ". c #E6D428692A6D", 7 | "X c #E9592C102E14", 8 | "o c #E9312F6F318C", 9 | "O c #EBFC33303563", 10 | "+ c #EC8A36B9390E", 11 | "@ c #EDBA3B753D83", 12 | "# c #EEDE3E324072", 13 | "$ c #F10D3ED240D2", 14 | "% c #EF9F42D34534", 15 | "& c #F21743314561", 16 | "* c #F1984718497B", 17 | "= c #F33F4AB64D1D", 18 | "- c #F4C24EB4513A", 19 | "; c #F4FB52085488", 20 | ": c #FCAD53F15634", 21 | "> c #F69F56DC596C", 22 | ", c #FE9756E1595C", 23 | "< c #F7665A455CB1", 24 | "1 c #FC495B1A5D11", 25 | "2 c #F8155E5B6102", 26 | "3 c #FA4F5EC8617E", 27 | "4 c #F83E60306269", 28 | "5 c #FB1762B2654D", 29 | "6 c #FB3D666468FB", 30 | "7 c #FD2D6B0A6D83", 31 | "8 c #FD066E9A7152", 32 | "9 c #FE7272DD75A4", 33 | "0 c #FF04768F797E", 34 | "q c #FF437A4F7D41", 35 | "w c #FF2D7E41818D", 36 | "e c #FF74820A8510", 37 | "r c None", 38 | /* pixels */ 39 | "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr", 40 | "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr", 41 | "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr", 42 | "rrrrrrrrrrrrrrrrrrrrrrrr42rrrrrr", 43 | "rrrrrr0000rrrrrrrrrrrr4565>rrrrr", 44 | "rrrrr0qqq09rrrrrrrrrr456772;rrrr", 45 | "rrrr0qqqqq99rrrrrrrr2568096<;rrr", 46 | "rrrr00qwew098rrrrrr24679084>-rrr", 47 | "rrrr90qweeq976rrrr24670974;=rrrr", 48 | "rrrr990qeew0876rr24679982;=&rrrr", 49 | "rrrrrr890qww0862<2679972;=rrrrrr", 50 | "rrrrrr7789qwq9766678972;=%rrrrrr", 51 | "rrrrrrrr6780qq0099996<;*rrrrrrrr", 52 | "rrrrrrrr5568qq0999082;*%rrrrrrrr", 53 | "rrrrrrrrrr2690755697;*rrrrrrrrrr", 54 | "rrrrrrrrrr<5995,,376-%rrrrrrrrrr", 55 | "rrrrrrrrrr<5993,:176;%rrrrrrrrrr", 56 | "rrrrrrrrr<<599511576;*%rrrrrrrrr", 57 | "rrrrrrrr<<3689877776<=&@rrrrrrrr", 58 | "rrrrrrr<<267776555651;*#+rrrrrrr", 59 | "rrrrrr><26775<;=*=;<51;&@Orrrrrr", 60 | "rrrrr<<25776>=%@@@&=11>=$+Orrrrr", 61 | "rrrr><25775>=%rrrr+#*;1,=$OXrrrr", 62 | "rrrr><3675>=%#rrrrOO@&:,-&OXrrrr", 63 | "rrrr><353>=%rrrrrrrro+&==&+Xrrrr", 64 | "rrrr;><<;=%@rrrrrrrr.XO@&$OXrrrr", 65 | "rrrrr;;-*%rrrrrrrrrrrr.XOOXrrrrr", 66 | "rrrrrr=*%@rrrrrrrrrrrr XXrrrrrr", 67 | "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr", 68 | "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr", 69 | "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr", 70 | "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr" 71 | }; 72 | -------------------------------------------------------------------------------- /src/lua/highlighter.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef LUAHIGHLIGHTER_H 19 | #define LUAHIGHLIGHTER_H 20 | 21 | #include 22 | 23 | namespace Lua { 24 | 25 | class Highlighter : public QSyntaxHighlighter 26 | { 27 | public: 28 | Highlighter(QTextDocument *parent = 0); 29 | 30 | protected: 31 | void highlightBlock(const QString &text); 32 | 33 | private: 34 | struct HighlightingRule 35 | { 36 | QRegExp pattern; 37 | QTextCharFormat format; 38 | }; 39 | QVector highlightingRules; 40 | 41 | QTextCharFormat keywordFormat; 42 | QTextCharFormat classFormat; 43 | QTextCharFormat singleLineCommentFormat; 44 | QTextCharFormat multiLineCommentFormat; 45 | QTextCharFormat quotationFormat; 46 | QTextCharFormat functionFormat; 47 | QTextCharFormat constantFormat; 48 | 49 | QRegExp multiLineStringExpression; 50 | QRegExp multiLineCommentExpression; 51 | }; 52 | 53 | } 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /src/selecttrianglewidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef SELECTTRIANGLEWIDGET_H 19 | #define SELECTTRIANGLEWIDGET_H 20 | 21 | #include "ui_selecttrianglewidget.h" 22 | #include "qosmicwidget.h" 23 | #include "xfedit.h" 24 | 25 | 26 | class SelectTriangleWidget 27 | : public QWidget, public QosmicWidget, private Ui::SelectTriangleWidget 28 | { 29 | Q_OBJECT 30 | 31 | Triangle* selectedTriangle; 32 | FigureEditor* triangleScene; 33 | GenomeVector* genome; 34 | 35 | public: 36 | SelectTriangleWidget(GenomeVector*, QWidget* =0); 37 | ~SelectTriangleWidget(); 38 | 39 | signals: 40 | void dataChanged(); 41 | void undoStateSignal(); 42 | 43 | public slots: 44 | void triangleSelectedSlot(Triangle* t); 45 | void reset(); 46 | 47 | protected slots: 48 | void fieldEditedAction(); 49 | void triangleSelectedSlot(int); 50 | void addTriangleAction(); 51 | void delTriangleAction(); 52 | void finalStateChangedSlot(bool); 53 | }; 54 | 55 | 56 | #endif 57 | -------------------------------------------------------------------------------- /src/renderdialog.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef RENDERDIALOG_H 19 | #define RENDERDIALOG_H 20 | 21 | #include "ui_renderdialog.h" 22 | 23 | 24 | 25 | class RenderDialog : public QDialog, private Ui::RenderDialog 26 | { 27 | Q_OBJECT 28 | 29 | public: 30 | RenderDialog(QWidget*, QString name, QString path, 31 | QSize size, QStringList list); 32 | ~RenderDialog(); 33 | QString absoluteFilePath(); 34 | QString selectedPreset(); 35 | bool presetSelected(); 36 | QSize selectedSize(); 37 | bool sizeSelected(); 38 | 39 | 40 | public slots: 41 | void filePathButtonSlot(); 42 | void accept(); 43 | void addSizeButtonSlot(); 44 | void delSizeButtonSlot(); 45 | 46 | private: 47 | QString fileName; 48 | QString lastDir; 49 | QSize imgSize; 50 | QString sizeText; 51 | QStringList presets; 52 | QString size; 53 | QString preset; 54 | QString nopreset; 55 | 56 | QRegExpValidator sizeValidator; 57 | }; 58 | 59 | 60 | 61 | #endif 62 | 63 | -------------------------------------------------------------------------------- /src/colorselector.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #include "colorselector.h" 19 | 20 | 21 | ColorSelector::ColorSelector(QWidget* parent) 22 | : QLabel(parent), last_pos(0,0) 23 | { 24 | repaintLabel(); 25 | } 26 | 27 | void ColorSelector::repaintLabel() 28 | { 29 | } 30 | 31 | 32 | void ColorSelector::mousePressEvent(QMouseEvent* e) 33 | { 34 | last_pos = e->pos(); 35 | repaintLabel(); 36 | emit colorSelected(last_pos); 37 | } 38 | 39 | void ColorSelector::mouseMoveEvent(QMouseEvent* e) 40 | { 41 | if (e->buttons() & Qt::LeftButton) 42 | { 43 | last_pos = e->pos(); 44 | repaintLabel(); 45 | emit colorSelected(last_pos); 46 | } 47 | } 48 | 49 | void ColorSelector::mouseReleaseEvent(QMouseEvent* e) 50 | { 51 | last_pos = e->pos(); 52 | repaintLabel(); 53 | } 54 | 55 | void ColorSelector::setSelectedIndex(QPoint p) 56 | { 57 | last_pos = p; 58 | repaintLabel(); 59 | } 60 | 61 | 62 | QPoint ColorSelector::selectedIndex() 63 | { 64 | return last_pos; 65 | } 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /src/qosmic.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef QOSMIC_H 19 | #define QOSMIC_H 20 | 21 | #include 22 | #include 23 | 24 | #ifndef VERSION 25 | #define VERSION "unknown" 26 | #endif 27 | 28 | #ifndef SCRIPTSDIR 29 | #define SCRIPTSDIR ":/unknown" 30 | #endif 31 | 32 | static const QString QOSMIC_VERSION( VERSION ); 33 | static const QString QOSMIC_SCRIPTSDIR( SCRIPTSDIR ); 34 | static const QString QOSMIC_USERDIR( QDir::home().absoluteFilePath(".qosmic") ); 35 | static const QString QOSMIC_AUTOSAVE( QOSMIC_USERDIR + "/autosave.flam3" ); 36 | 37 | static const QString DEFAULT_FLAME_XML( 38 | "\n" 42 | "\n" 43 | ""); 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/lua/frame.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef FRAME_LUA_H 19 | #define FRAME_LUA_H 20 | 21 | #include "genomevector.h" 22 | #include "luatype.h" 23 | #include "lunar.h" 24 | 25 | 26 | namespace Lua 27 | { 28 | class LuaThreadAdapter; 29 | class Frame : public LuaType 30 | { 31 | GenomeVector* genome_vec; 32 | 33 | public: 34 | Frame(lua_State*); 35 | ~Frame(); 36 | 37 | // lua interface 38 | int get_genome(lua_State*); 39 | int selected(lua_State*); 40 | int bitdepth(lua_State*); 41 | int earlyclip(lua_State*); 42 | int num_genomes(lua_State*); 43 | int update(lua_State*); 44 | int render(lua_State*); 45 | int load(lua_State*); 46 | int save(lua_State*); 47 | int copy_genome(lua_State*); 48 | int del_genome(lua_State*); 49 | int add_genome(lua_State*); 50 | int genomes(lua_State*); 51 | int genome(lua_State*); 52 | 53 | void setContext(LuaThreadAdapter*); 54 | static const char className[]; 55 | static Lunar::RegType methods[]; 56 | }; 57 | } 58 | 59 | #endif 60 | -------------------------------------------------------------------------------- /src/genomecolorselector.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef GENOMECOLORSELECTOR_H 20 | #define GENOMECOLORSELECTOR_H 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | #include "genomevector.h" 27 | 28 | class GenomeColorSelector : public QLabel 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | GenomeColorSelector(QWidget* parent=0, GenomeVector* g=0); 34 | void setGenome(int); 35 | void setGenomeVector(GenomeVector*); 36 | void mousePressEvent (QMouseEvent*); 37 | void mouseMoveEvent (QMouseEvent*); 38 | void mouseReleaseEvent (QMouseEvent*); 39 | void setSelectedIndex(int); 40 | int selectedIndex(); 41 | 42 | signals: 43 | void colorSelected(double); 44 | void undoStateSignal(); 45 | 46 | public slots: 47 | void repaintLabel(); 48 | void toggleShowHistAction(bool); 49 | 50 | private: 51 | GenomeVector* genome; 52 | QMenu* popupMenu; 53 | QAction* histMenuAction; 54 | int selected_y; 55 | int last_y; 56 | bool show_histogram; 57 | }; 58 | 59 | 60 | #endif 61 | -------------------------------------------------------------------------------- /ui/chaoswidget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | ChaosWidget 4 | 5 | 6 | 7 | 0 8 | 0 9 | 200 10 | 371 11 | 12 | 13 | 14 | Chaos 15 | 16 | 17 | 18 | 19 | 20 | 21 | 0 22 | 0 23 | 24 | 25 | 26 | QFrame::NoFrame 27 | 28 | 29 | Qt::ScrollBarAlwaysOn 30 | 31 | 32 | Qt::ScrollBarAlwaysOff 33 | 34 | 35 | false 36 | 37 | 38 | QAbstractItemView::SingleSelection 39 | 40 | 41 | QAbstractItemView::SelectRows 42 | 43 | 44 | false 45 | 46 | 47 | false 48 | 49 | 50 | false 51 | 52 | 53 | true 54 | 55 | 56 | true 57 | 58 | 59 | false 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | ChaosTableView 68 | QTableView 69 |
chaoswidget.h
70 |
71 |
72 | 73 | 74 |
75 | -------------------------------------------------------------------------------- /src/intvalueeditor.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef INTVALUEEDITOR_H 20 | #define INTVALUEEDITOR_H 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | #include "wheelvalueeditor.h" 27 | 28 | class IntValueEditor : public QSpinBox 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | IntValueEditor(QWidget* parent=0); 34 | void updateValue(int); 35 | void setWheelEventUpdate(bool); 36 | bool wheelEventUpdate() const; 37 | void restoreSettings(); 38 | void stepUp(); 39 | void stepDown(); 40 | 41 | signals: 42 | void valueUpdated(); 43 | void undoStateSignal(); 44 | 45 | protected: 46 | void keyPressEvent(QKeyEvent*); 47 | void wheelEvent(QWheelEvent*); 48 | void mousePressEvent(QMouseEvent*); 49 | void mouseMoveEvent(QMouseEvent*); 50 | void mouseReleaseEvent(QMouseEvent*); 51 | 52 | private: 53 | bool wheelEventSignal; 54 | int start_value; 55 | int default_step; 56 | QPointF start_pos; 57 | QPointF last_pos; 58 | QMouseEvent* last_press; 59 | }; 60 | 61 | 62 | #endif 63 | -------------------------------------------------------------------------------- /ui/genomevectorlistmodelitemeditor.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | GenomeVectorListModelItemEditor 4 | 5 | 6 | 7 | 0 8 | 0 9 | 126 10 | 36 11 | 12 | 13 | 14 | Form 15 | 16 | 17 | true 18 | 19 | 20 | 21 | 22 | 23 | temporal position of this genome in the animation sequence 24 | 25 | 26 | time 27 | 28 | 29 | Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter 30 | 31 | 32 | 33 | 34 | 35 | 36 | 2000000000 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 0 45 | 0 46 | 47 | 48 | 49 | 50 | 4 51 | 4 52 | 53 | 54 | 55 | x 56 | 57 | 58 | 59 | :/icons/silk/bullet_black.xpm:/icons/silk/bullet_black.xpm 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | IntValueEditor 68 | QSpinBox 69 |
intvalueeditor.h
70 |
71 |
72 | 73 | 74 | 75 | 76 |
77 | -------------------------------------------------------------------------------- /icons/silk/page_white.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *page_white[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 38 1", 5 | " c #A58AA58AA58A", 6 | ". c #A95BA95BA95B", 7 | "X c #AB33AB33AB33", 8 | "o c #ACE2ACE2ACE2", 9 | "O c #ADAFADAFADAF", 10 | "+ c #C8ACC8ACC8AC", 11 | "@ c #C9DBC9DBC9DB", 12 | "# c #CD97CD97CD97", 13 | "$ c #D0AED0AED0AE", 14 | "% c #D700D700D700", 15 | "& c #D809D809D809", 16 | "* c #D8A9D8A9D8A9", 17 | "= c #DCFEDCFEDCFE", 18 | "- c #E2BCE2BCE2BC", 19 | "; c #E487E487E487", 20 | ": c #E85BE85BE85B", 21 | "> c #EA46EA46EA46", 22 | ", c #EB16EB16EB16", 23 | "< c #EC26EC26EC26", 24 | "1 c #ECCDECCDECCD", 25 | "2 c #EE0BEE0BEE0B", 26 | "3 c #EEEDEEEDEEED", 27 | "4 c #F019F019F019", 28 | "5 c #F0E6F0E6F0E6", 29 | "6 c #F1DBF1DBF1DB", 30 | "7 c #F2EDF2EDF2ED", 31 | "8 c #F400F400F400", 32 | "9 c #F51AF51AF51A", 33 | "0 c #F604F604F604", 34 | "q c #F708F708F708", 35 | "w c #F7F6F7F6F7F6", 36 | "e c #F8FFF8FFF8FF", 37 | "r c #FA08FA08FA08", 38 | "t c #FB00FB00FB00", 39 | "y c #FC05FC05FC05", 40 | "u c #FCECFCECFCEC", 41 | "i c #FE00FE00FE00", 42 | "p c None", 43 | /* pixels */ 44 | "pppppppppppppppppppppppppppppppp", 45 | "pppppppppppppppppppppppppppppppp", 46 | "pppp%>,,<<<<<<<1111<>*.ppppppppp", 47 | "pppp>yyyyuuuuyytttrty2@ pppppppp", 48 | "pppp,yewwwweew098747r0;# ppppppp", 49 | "pppp,yw00q00097652,2er6-+Xpppppp", 50 | "pppp*oppppp", 51 | "pppp:2e1pppp", 56 | "pppp. * 17 | ***************************************************************************/ 18 | #ifndef BASISTRIANGLE_H 19 | #define BASISTRIANGLE_H 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | typedef QPolygonF TriangleCoords; 28 | typedef QList::iterator TriangleCoordsIterator; 29 | 30 | class FigureEditor; 31 | 32 | class BasisTriangle : public QGraphicsPolygonItem 33 | { 34 | protected: 35 | QTransform coordinateTransform; 36 | FigureEditor* canvas; 37 | 38 | public: 39 | QPointF A, B, C; 40 | enum { Type = UserType + 1 }; 41 | 42 | BasisTriangle(FigureEditor* xfedit, QTransform& m); 43 | ~BasisTriangle(); 44 | int type() const; 45 | void setPoints(QPolygonF); 46 | void setPoints(QPointF, QPointF, QPointF); 47 | const QTransform& coordTransform() const; 48 | void setCoordTransform(QTransform); 49 | void scale(double, double); 50 | TriangleCoords getCoords(double c[3][2]); 51 | void applyTransform(TriangleCoords&, double[3][2]); 52 | }; 53 | 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /src/doublevalueeditor.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef DOUBLEVALUEEDITOR_H 20 | #define DOUBLEVALUEEDITOR_H 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | #include "wheelvalueeditor.h" 27 | 28 | class DoubleValueEditor : public QDoubleSpinBox 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | DoubleValueEditor(QWidget* parent=0); 34 | void updateValue(double); 35 | void setWheelEventUpdate(bool); 36 | bool wheelEventUpdate() const; 37 | void restoreSettings(); 38 | void stepUp(); 39 | void stepDown(); 40 | 41 | signals: 42 | void valueUpdated(); 43 | void undoStateSignal(); 44 | 45 | protected: 46 | void keyPressEvent(QKeyEvent*); 47 | void wheelEvent(QWheelEvent*); 48 | void mousePressEvent(QMouseEvent*); 49 | void mouseMoveEvent(QMouseEvent*); 50 | void mouseReleaseEvent(QMouseEvent*); 51 | 52 | private: 53 | bool wheelEventSignal; 54 | double start_value; 55 | double default_step; 56 | QPointF start_pos; 57 | QPointF last_pos; 58 | QMouseEvent* last_press; 59 | }; 60 | 61 | 62 | #endif 63 | -------------------------------------------------------------------------------- /src/coordinatemark.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #include "coordinatemark.h" 19 | 20 | 21 | CoordinateMark::CoordinateMark(QGraphicsItem* parent) 22 | : QGraphicsPolygonItem(QRectF(0.,0.,10.,10.),parent) 23 | { 24 | m_path.moveTo(4.0, 0.0); 25 | m_path.lineTo(4.0, 4.0); 26 | m_path.lineTo(0.0, 4.0); 27 | 28 | m_path.moveTo(0.0, 6.0); 29 | m_path.lineTo(4.0, 6.0); 30 | m_path.lineTo(4.0, 10.0); 31 | 32 | m_path.moveTo(6.0, 10.0); 33 | m_path.lineTo(6.0, 6.0); 34 | m_path.lineTo(10.0, 6.0); 35 | 36 | m_path.moveTo(10.0, 4.0); 37 | m_path.lineTo(6.0, 4.0); 38 | m_path.lineTo(6.0, 0.0); 39 | } 40 | 41 | void CoordinateMark::paint(QPainter* painter, 42 | const QStyleOptionGraphicsItem* /*option*/, 43 | QWidget* /*widget*/) 44 | { 45 | painter->setPen(pen()); 46 | painter->drawPath(m_path); 47 | } 48 | 49 | int CoordinateMark::type() const 50 | { 51 | return Type; 52 | } 53 | 54 | QPointF CoordinateMark::center() const 55 | { 56 | return pos() + QPointF(5.,5.); 57 | } 58 | 59 | void CoordinateMark::centerOn(const QPointF& p) 60 | { 61 | setPos(p + QPointF(-5.,-5.)); 62 | } 63 | 64 | -------------------------------------------------------------------------------- /src/imgsettingswidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef IMGSETTINGSWIDGET_H 19 | #define IMGSETTINGSWIDGET_H 20 | 21 | #include 22 | 23 | #include "ui_imgsettingswidget.h" 24 | #include "viewerpresetswidget.h" 25 | #include "genomevector.h" 26 | 27 | class ImageSettingsWidget : public QWidget, private Ui::ImageSettingsWidget 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | ImageSettingsWidget(GenomeVector*, QWidget* parent=0); 33 | void updateFormData(); 34 | void reset(); 35 | 36 | signals: 37 | void dataChanged(); 38 | void symmetryAdded(); 39 | void presetSelected(); 40 | 41 | protected slots: 42 | void fieldEditedAction(); 43 | void applySymmetryAction(); 44 | void moveStackLeftAction(); 45 | void moveStackRightAction(); 46 | void showPresetsDialog(); 47 | void selectPresetAction(int); 48 | void presetsDataChangedAction(); 49 | void resetPresetsComboBoxAction(); 50 | 51 | protected: 52 | void hideEvent(QHideEvent*); 53 | 54 | private: 55 | GenomeVector* genome; 56 | ViewerPresetsWidget* presets; 57 | QTimer* timer; 58 | }; 59 | 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /src/viewerpresetswidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef VIEWERPRESETSWIDGET_H 19 | #define VIEWERPRESETSWIDGET_H 20 | 21 | #include "ui_viewerpresetswidget.h" 22 | 23 | #include "genomevector.h" 24 | #include "qosmicwidget.h" 25 | #include "viewerpresetsmodel.h" 26 | 27 | class ViewerPresetsWidget : public QWidget, public QosmicWidget, 28 | private Ui::ViewerPresetsWidget 29 | { 30 | Q_OBJECT 31 | 32 | GenomeVector* genomes; 33 | ViewerPresetsModel* model; 34 | 35 | public: 36 | ViewerPresetsWidget(GenomeVector*, QWidget* =0); 37 | QStringList presetNames(); 38 | QString current(); 39 | void selectPreset(const QString&); 40 | void selectPreset(int); 41 | int selectedIndex() const; 42 | void reset(); 43 | 44 | public slots: 45 | void addPresetSlot(); 46 | void delPresetSlot(); 47 | void updatePresetSlot(); 48 | void moveUpSlot(); 49 | void moveDownSlot(); 50 | void presetSelectedSlot(const QModelIndex&); 51 | 52 | signals: 53 | void presetSelected(); 54 | void dataChanged(); 55 | 56 | protected: 57 | void keyPressEvent(QKeyEvent*); 58 | }; 59 | 60 | #endif 61 | -------------------------------------------------------------------------------- /src/colorsettingswidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef COLORSETTINGSWIDGET_H 20 | #define COLORSETTINGSWIDGET_H 21 | 22 | #include 23 | #include 24 | 25 | #include "ui_colorsettingswidget.h" 26 | #include "genomevector.h" 27 | #include "triangle.h" 28 | 29 | 30 | class ColorSettingsWidget : public QWidget, private Ui::ColorSettingsWidget 31 | { 32 | Q_OBJECT 33 | 34 | public: 35 | ColorSettingsWidget(GenomeVector*, QWidget* parent=0); 36 | void updateFormData(); 37 | void updateColorLabel(); 38 | 39 | signals: 40 | void dataChanged(); 41 | void colorChanged(double); 42 | void colorSelected(double); 43 | void undoStateSignal(); 44 | 45 | public slots: 46 | void triangleSelectedSlot(Triangle*); 47 | void reset(); 48 | 49 | protected slots: 50 | void fieldEditedAction(); 51 | void colorChangedAction(); 52 | void colorSelectedAction(double); 53 | void changeBackground(QColor); 54 | 55 | protected: 56 | void showEvent(QShowEvent*); 57 | 58 | private: 59 | GenomeVector* genome; 60 | Triangle* selectedTriangle; 61 | }; 62 | 63 | 64 | #endif 65 | -------------------------------------------------------------------------------- /src/nodeitem.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef NODEITEM_H 19 | #define NODEITEM_H 20 | 21 | #include 22 | #include 23 | 24 | #include "triangle.h" 25 | 26 | class NodeItem : public QGraphicsEllipseItem 27 | { 28 | QGraphicsScene* canvas; 29 | Triangle* edges; 30 | QString m_name; 31 | QRectF m_boundingRect; 32 | QGraphicsSimpleTextItem* label; 33 | QPen std_pen; 34 | int m_index; 35 | 36 | public: 37 | NodeItem( QGraphicsScene*, Triangle*, int, const char* n = "" ); 38 | ~NodeItem(); 39 | Triangle* triangle(); 40 | void setTriangle(Triangle*); 41 | void moveBy(double, double); 42 | void movePoint(double, double); 43 | int type() const; 44 | void setPos(const QPointF&); 45 | void setPen(const QPen&, const QPen&); 46 | QRectF boundingRect(); 47 | QString name() const; 48 | int id() const; 49 | void setVisible(bool); 50 | 51 | protected: 52 | void hoverEnterEvent(QGraphicsSceneHoverEvent*); 53 | void hoverLeaveEvent(QGraphicsSceneHoverEvent*); 54 | 55 | public: 56 | enum { Type = UserType + 3 }; 57 | }; 58 | 59 | 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /src/colordialog.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef COLORDIALOG_H 19 | #define COLORDIALOG_H 20 | 21 | #include "colorselector.h" 22 | 23 | class HueSatSelector : public ColorSelector 24 | { 25 | int value; 26 | 27 | public: 28 | HueSatSelector(QWidget* parent=0); 29 | void setSelectedIndex(QColor); 30 | void repaintLabel(); 31 | }; 32 | 33 | class ValSelector : public ColorSelector 34 | { 35 | public: 36 | ValSelector(QWidget* parent=0); 37 | void setSelectedIndex(QColor); 38 | void repaintLabel(); 39 | }; 40 | 41 | 42 | 43 | #include "ui_colordialog.h" 44 | 45 | 46 | class ColorDialog : public QDialog, private Ui::ColorDialog 47 | { 48 | Q_OBJECT 49 | 50 | public: 51 | ColorDialog(QWidget* parent=0); 52 | ~ColorDialog(); 53 | QColor getSelectedColor(); 54 | void setSelectedColor(QColor); 55 | void setAlphaEnabled(bool); 56 | 57 | private slots: 58 | void indexSelected(QPoint); 59 | void rgbSpinValueChanged(); 60 | void hsvSpinValueChanged(); 61 | 62 | signals: 63 | void colorSelected(QColor); 64 | 65 | private: 66 | QColor selectedColor; 67 | 68 | }; 69 | 70 | 71 | 72 | #endif 73 | -------------------------------------------------------------------------------- /src/variationswidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef VARIATIONSWIDGET_H 19 | #define VARIATIONSWIDGET_H 20 | 21 | #include 22 | #include 23 | 24 | #include "ui_variationswidget.h" 25 | #include "genomevector.h" 26 | #include "triangle.h" 27 | #include "varstablewidget.h" 28 | 29 | 30 | class VariationsWidget : public QWidget, private Ui::VariationsWidget 31 | { 32 | Q_OBJECT 33 | 34 | public: 35 | VariationsWidget(GenomeVector*, QWidget* parent=0); 36 | ~VariationsWidget(); 37 | 38 | public slots: 39 | void triangleSelectedSlot(Triangle* t); 40 | void updateFormData(); 41 | 42 | signals: 43 | void dataChanged(); 44 | void undoStateSignal(); 45 | 46 | protected: 47 | void wheelEvent(QWheelEvent*); 48 | void resetVariationSelector(); 49 | 50 | protected slots: 51 | void variationEditedSlot(int); 52 | void valueEditorUpdatedSlot(); 53 | void variationSelectedSlot(int); 54 | void addVariationValueSlot(); 55 | 56 | private: 57 | GenomeVector* genome; 58 | Triangle* selectedTriangle; 59 | VarsTableModel* model; 60 | QString lastVariation; 61 | }; 62 | 63 | 64 | #endif 65 | -------------------------------------------------------------------------------- /ui/variationswidget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | VariationsWidget 4 | 5 | 6 | 7 | 0 8 | 0 9 | 182 10 | 241 11 | 12 | 13 | 14 | Variations 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -99.000000000000000 26 | 27 | 28 | 99.000000000000000 29 | 30 | 31 | 32 | 33 | 34 | 35 | apply value 36 | 37 | 38 | + 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 0 49 | 0 50 | 51 | 52 | 53 | QFrame::NoFrame 54 | 55 | 56 | Qt::ScrollBarAlwaysOn 57 | 58 | 59 | Qt::ScrollBarAlwaysOff 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | DoubleValueEditor 68 | QDoubleSpinBox 69 |
doublevalueeditor.h
70 |
71 | 72 | VarsTableWidget 73 | QTreeView 74 |
varstablewidget.h
75 |
76 |
77 | 78 | 79 |
80 | -------------------------------------------------------------------------------- /scripts/functions.lua: -------------------------------------------------------------------------------- 1 | function dump_xform(xf) 2 | print(xf) 3 | print('index=',xf:index()) 4 | print('pos=',xf:pos()) 5 | print('color=',xf:color()) 6 | print('density=',xf:density()) 7 | print('color_speed=',xf:color_speed()) 8 | print('opacity=',xf:opacity()) 9 | print('a=',xf:a()) 10 | print('b=',xf:b()) 11 | print('c=',xf:c()) 12 | for _, v in ipairs(VARIATIONS) do 13 | val, vars = xf:var(_) 14 | if val ~= 0 then 15 | print(v .. '=', val) 16 | for _, v in pairs(vars) do 17 | print(' ' .. _ .. '=', v) 18 | end 19 | end 20 | end 21 | end 22 | 23 | function dump_genome(g) 24 | print(g) 25 | nxf = g:num_xforms() 26 | print('num_xforms=',nxf) 27 | print('size=',g:width(),g:height()) 28 | print('time=',g:time()) 29 | print('final_xform_index=',g:final_xform_index()) 30 | print('center=',g:center()) 31 | print('rotate=',g:rotate()) 32 | print('zoom=',g:zoom()) 33 | print('nbatches=',g:nbatches()) 34 | print('estimator=',g:estimator()) 35 | print('estimator_curve=',g:estimator_curve()) 36 | print('estimator_minimum=',g:estimator_minimum()) 37 | print('sample_density=',g:sample_density()) 38 | print('scale=',g:pixels_per_unit()) 39 | print('background=', g:background()) 40 | print() 41 | if (nxf > 0) then 42 | for n = 1, nxf do 43 | dump_xform(g:get_xform(n)) 44 | print() 45 | end 46 | end 47 | end 48 | 49 | function set_low_quality(g) 50 | g:spatial_filter_radius(0) 51 | g:sample_density(40) -- quality 52 | g:ntemporal_samples(1) 53 | g:estimator(0) 54 | g:nbatches(1) -- passes 55 | end 56 | 57 | function modify_xf_test(xf,d) 58 | for n=1,100 do 59 | xf:translate(d*0.05,0) 60 | xf:rotate(3.6) 61 | xf:scale(0.95) 62 | frame:render() 63 | end 64 | end 65 | 66 | function rotate_xf_test(xf) 67 | for n=1,360 do 68 | xf:rotate(1) 69 | frame:update() -- update the widgets' data 70 | end 71 | end 72 | 73 | function spread_colors(g) 74 | -- Spreads the color parameters evenly over all 75 | -- xforms in genome 76 | local num_xf = g:num_xforms() 77 | for i = 1, num_xf do 78 | g:get_xform(i):color(i / num_xf); 79 | end 80 | end 81 | 82 | function spread_density(g) 83 | -- Spreads the xform density parameters evenly over 1.0 84 | local num_xf = g:num_xforms() 85 | for i = 1, num_xf do 86 | g:get_xform(i):density(1.0 / num_xf); 87 | end 88 | end 89 | 90 | function bw_palette(g) 91 | -- Creates a white to black gradient in the palette for genome g 92 | for i = 1,256 do 93 | v = (256-i)/256 94 | g:palette(i, v,v,v) 95 | end 96 | end 97 | 98 | -------------------------------------------------------------------------------- /src/undoring.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef UNDORING_H 19 | #define UNDORING_H 20 | 21 | #include 22 | 23 | #include "flam3util.h" 24 | 25 | #define UNDORING_SIZE 50 26 | 27 | class UndoState 28 | { 29 | public: 30 | flam3_genome Genome; 31 | QPolygonF SelectionRect; 32 | int SelectedType; 33 | QList NodesO; 34 | QList NodesX; 35 | QList NodesY; 36 | QList Triangles; 37 | QPointF MarkPos; 38 | 39 | UndoState(); 40 | UndoState(const UndoState&); 41 | UndoState& operator=(const UndoState&); 42 | void clear(); 43 | }; 44 | 45 | class UndoStateProvider 46 | { 47 | public: 48 | virtual void provideState(UndoState*) =0; 49 | virtual void restoreState(UndoState*) =0; 50 | }; 51 | 52 | class UndoRing 53 | { 54 | qint64 head; 55 | qint64 current; 56 | 57 | UndoState ring[UNDORING_SIZE]; 58 | 59 | public: 60 | UndoRing(); 61 | UndoRing(const UndoRing&); 62 | UndoRing& operator=(const UndoRing&); 63 | ~UndoRing(); 64 | UndoState* prev(); 65 | UndoState* next(); 66 | UndoState* advance(); 67 | UndoState* currentState(); 68 | void clear(); 69 | int index(); 70 | int size(); 71 | bool atHead(); 72 | bool atTail(); 73 | }; 74 | 75 | #endif 76 | -------------------------------------------------------------------------------- /src/trianglecoordswidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef TRIANGLECOORDSWIDGET_H 20 | #define TRIANGLECOORDSWIDGET_H 21 | 22 | #include 23 | 24 | #include "ui_trianglecoordswidget.h" 25 | 26 | class Triangle; 27 | class GenomeVector; 28 | 29 | class TriangleCoordsWidget : public QWidget, private Ui::TriangleCoordsWidget 30 | { 31 | Q_OBJECT 32 | 33 | public: 34 | enum CoordType { Rect, Degree, Radian }; 35 | 36 | private: 37 | int genome_offset; 38 | GenomeVector* genome; 39 | Triangle* selectedTriangle; 40 | QButtonGroup* coordsButtonGroup; 41 | CoordType coords; 42 | 43 | public: 44 | TriangleCoordsWidget(GenomeVector*, QWidget* parent=0); 45 | void setGenome(int); 46 | void updateFormData(); 47 | CoordType coordType(); 48 | 49 | signals: 50 | void dataChanged(); 51 | void undoStateSignal(); 52 | 53 | public slots: 54 | void triangleSelectedSlot(Triangle*); 55 | void triangleModifiedSlot(Triangle*); 56 | 57 | protected slots: 58 | void fieldCoordsEditedAction(); 59 | void fieldVariablesEditedAction(); 60 | void coordsButtonGroupClickedAction(); 61 | 62 | protected: 63 | void showEvent(QShowEvent*); 64 | 65 | private: 66 | void updateCoordsFormData(); 67 | void updateVariablesFormData(); 68 | }; 69 | 70 | #endif 71 | -------------------------------------------------------------------------------- /icons/silk/color_swatch.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *color_swatch[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 47 1", 5 | " c #FFE96BC169D0", 6 | ". c #FFE96CF76A01", 7 | "X c #FEF96E426B42", 8 | "o c #FEFE6F6F6B6B", 9 | "O c #4AEFCD2169C7", 10 | "+ c #4A3ACCD26BE6", 11 | "@ c #4D47CE54689E", 12 | "# c #4C7FCE0F6ABE", 13 | "$ c #4D96CDC66B32", 14 | "% c #4DC3CC2E6C0D", 15 | "& c #4CD4CD796D4E", 16 | "* c #4FFECD5B6AEB", 17 | "= c #5050CCCC6D6D", 18 | "- c #FFFFA91B73DD", 19 | "; c #FFFFA9E373A3", 20 | ": c #FFFFAAAA7373", 21 | "> c #FFFFABBC73A3", 22 | ", c #F3CED69264C6", 23 | "< c #F390D774647B", 24 | "1 c #F0F0D5D56767", 25 | "2 c #F0A4D6B0672A", 26 | "3 c #5348778BAFB5", 27 | "4 c #55C679D2AFCB", 28 | "5 c #55F4783AB0A6", 29 | "6 c #58587A7AB0B0", 30 | "7 c #FFFF759CAF97", 31 | "8 c #FFFF768AB0AD", 32 | "9 c #FFFF7777B1B1", 33 | "0 c #5D82AFF3EE8C", 34 | "q c #5D35B1D3ED13", 35 | "w c #5D84B145EFA7", 36 | "e c #5DD7AF5DF11C", 37 | "r c #60B2B021EE6D", 38 | "t c #6060B0B0EBEB", 39 | "y c #CFE5EE63B41C", 40 | "u c #D0D0EBEBB2B2", 41 | "i c #D334EE2BB2BC", 42 | "p c #D35DEC89B412", 43 | "a c #D5DBEED0B427", 44 | "s c #D27FEF0AB584", 45 | "d c #D9D99B9BDDDD", 46 | "f c #DC939AA1E018", 47 | "g c #D9179C53DEBD", 48 | "h c #DC6B9C43DEC2", 49 | "j c #DBDF9B59E10A", 50 | "k c #DF3F9B50E109", 51 | "l c None", 52 | /* pixels */ 53 | "llllllllllllllllllllllllllllllll", 54 | "llllllllllllllllllllllllllllllll", 55 | "llllllllllllllllllllllllllllllll", 56 | "llllllllllllllllllllllllllllllll", 57 | "lllloooooXll>::::;ll211111llllll", 58 | "lllloooooXll>::::;ll211111llllll", 59 | "lllloooooXll>::::;ll211111llllll", 60 | "lllloooooXll>::::;ll211111llllll", 61 | "lllloooooXll>::::;ll211111llllll", 62 | "llll..... ll>;;;;-ll<,,,,,llllll", 63 | "llllllllllllllllllllllllllllllll", 64 | "llllllllllllllllllllllllllllllll", 65 | "llllyyyyysll+&&&&#lle00000llllll", 66 | "lllluuuuupll%====*llrtttttllllll", 67 | "lllluuuuupll%====*llrtttttllllll", 68 | "lllluuuuupll%====*llrtttttllllll", 69 | "lllluuuuupll%====*llrtttttllllll", 70 | "lllliiiiiallO$$$$@llwqqqqqllllll", 71 | "llllllllllllllllllllllllllllllll", 72 | "llllllllllllllllllllllllllllllll", 73 | "llll555553llkffffjll788888llllll", 74 | "llll666664llhddddgll899999llllll", 75 | "llll666664llhddddgll899999llllll", 76 | "llll666664llhddddgll899999llllll", 77 | "llll666664llhddddgll899999llllll", 78 | "llll666664llhddddgll899999llllll", 79 | "llllllllllllllllllllllllllllllll", 80 | "llllllllllllllllllllllllllllllll", 81 | "llllllllllllllllllllllllllllllll", 82 | "llllllllllllllllllllllllllllllll", 83 | "llllllllllllllllllllllllllllllll", 84 | "llllllllllllllllllllllllllllllll" 85 | }; 86 | -------------------------------------------------------------------------------- /src/posttriangle.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ****************************************************************************/ 18 | #include 19 | #include "posttriangle.h" 20 | #include "logger.h" 21 | 22 | 23 | PostTriangle::PostTriangle(FigureEditor* c, flam3_xform* x, BasisTriangle* b) 24 | : Triangle(c, x, b, -1) 25 | { 26 | logFiner("PostTriangle::PostTriangle : constr"); 27 | TriangleCoords tc = basisTriangle->getCoords(m_xform->post); 28 | setPoints(tc); 29 | } 30 | 31 | void PostTriangle::resetPosition() 32 | { 33 | m_xform->post[0][0] = 1.0; 34 | m_xform->post[0][1] = 0.0; 35 | m_xform->post[1][0] = 0.0; 36 | m_xform->post[1][1] = 1.0; 37 | m_xform->post[2][0] = 0.0; 38 | m_xform->post[2][1] = 0.0; 39 | 40 | TriangleCoords tc = basisTriangle->getCoords(m_xform->post); 41 | setPoints(tc); 42 | } 43 | 44 | void PostTriangle::coordsToXForm() 45 | { 46 | logFiner("PostTriangle::coordsToXForm : enter"); 47 | basisTriangle->applyTransform(cList, m_xform->post); 48 | } 49 | 50 | int PostTriangle::type() const 51 | { 52 | return Type; 53 | } 54 | 55 | void PostTriangle::basisScaledSlot() 56 | { 57 | const QTransform basis(basisTriangle->coordTransform()); 58 | setTransform(basis); 59 | TriangleCoords tc = basisTriangle->getCoords(m_xform->post); 60 | setPoints(tc); 61 | QBrush b(brush()); 62 | b.setTransform(basis); 63 | setBrush(b); 64 | } 65 | 66 | 67 | -------------------------------------------------------------------------------- /icons/silk/shape_move_forwards.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *shape_move_forwards[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 50 1", 5 | " c #53A27FD5D199", 6 | ". c #5AB984E2D36F", 7 | "X c #63238B76D6EA", 8 | "o c #68158FA2D88F", 9 | "O c #67AC906DD856", 10 | "+ c #66F091BAD97E", 11 | "@ c #6C739492DA40", 12 | "# c #6FA09960DC42", 13 | "$ c #713097DCDBED", 14 | "% c #749A9BDFDD3D", 15 | "& c #7B739DC1DC60", 16 | "* c #7C42A126DF15", 17 | "= c #7C97A4DDE19E", 18 | "- c #7EE3A865E26E", 19 | "; c #838EA39CDE80", 20 | ": c #859AA6C6E0F6", 21 | "> c #88A8A7FCE0F3", 22 | ", c #84D8ABE3E3EE", 23 | "< c #8C37AC7FE2F1", 24 | "1 c #90B2AFEDE41E", 25 | "2 c #87EFB180E5B9", 26 | "3 c #8C52B323E69C", 27 | "4 c #9433B471E622", 28 | "5 c #9936B775E714", 29 | "6 c #9766B8BDE81F", 30 | "7 c #99DFB8E4E7FA", 31 | "8 c #9CC4BC4CE96D", 32 | "9 c #A117BF77EAC2", 33 | "0 c #B6DFC360D976", 34 | "q c #B8D2C57BDB91", 35 | "w c #A009C064EB4B", 36 | "e c #A3AAC232EBC5", 37 | "r c #C64AC64AC64A", 38 | "t c #CBFDCBFDCBFD", 39 | "y c #D4E3D4E3D4E3", 40 | "u c #DA7FD9AED83E", 41 | "i c #DBA1DB85DB54", 42 | "p c #C3DACE0FE067", 43 | "a c #C638D060E249", 44 | "s c #D1E4DC47EF60", 45 | "d c #D413DE5EF1A0", 46 | "f c #D792E1A9F444", 47 | "g c #DC3EE429F2AE", 48 | "h c #E5ABE519E403", 49 | "j c #EDAEEDAEEDAE", 50 | "k c #F067F2ECF78A", 51 | "l c #F23CF231F212", 52 | "z c #F8C7F7D4F60D", 53 | "x c #FF52FEC9FDA5", 54 | "c c None", 55 | /* pixels */ 56 | "cccccccccccccccccccccccccccccccc", 57 | "cccccccccccccccccccccccccccccccc", 58 | "cccccccccccccccccccccccccccccccc", 59 | "cccccccccccccccccccccccccccccccc", 60 | "cc33333322,,,,,,,-====*%cccccccc", 61 | "cc3344444333332<,,,,,=*%cccccccc", 62 | "cc348e888888876664444<*%cccccccc", 63 | "cc34weeeeee9988887755<*$cccccccc", 64 | "cc248eeeee98888775544<&#cccccccc", 65 | "cc238eee9888877554444>%@cccccccc", 66 | "cc,38e998888775544444>%@cccccccc", 67 | "cc,38998887755444444<:$@cccccccc", 68 | "cc,378888775544441<<<;@&0iuuyycc", 69 | "cc,<6887755444441<<<<*+;phhiuycc", 70 | "cc-,68775544444<<<<<<*o;szzjiycc", 71 | "cc=,477544444<<<<<<>>&o;fxxliycc", 72 | "cc=,45544441<<<<<>>>>&X;dxxliycc", 73 | "cc=:3544441<<<<<>>>>;&X;dxxlitcc", 74 | "cc%=<44441<<<<<>>>:;;%X;dxxlitcc", 75 | "cc%*:<>>:::;**&&&&%%%@.&dxxlutcc", 76 | "cc%%%%%%$#@@OOoXXXXXX. &sxxlutcc", 77 | "cc$#@@@++@&;;;;;;;;*&&&5gxxlutcc", 78 | "ccccccccccqasfdddddddssgkxxlytcc", 79 | "ccccccccccihzxxxxxxxxxxxxxxlyrcc", 80 | "ccccccccccihzxxxxxxxxxxxxxxlyrcc", 81 | "ccccccccccuijllllllllllljllhyrcc", 82 | "ccccccccccuiiiiiiiiuuuuyyyyytrcc", 83 | "ccccccccccuuyyyyytttttttrrrrrrcc", 84 | "cccccccccccccccccccccccccccccccc", 85 | "cccccccccccccccccccccccccccccccc", 86 | "cccccccccccccccccccccccccccccccc", 87 | "cccccccccccccccccccccccccccccccc" 88 | }; 89 | -------------------------------------------------------------------------------- /src/lua/luaeditor.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef LUALUAEDITOR_H 19 | #define LUALUAEDITOR_H 20 | 21 | #include 22 | #include "highlighter.h" 23 | 24 | namespace Lua { 25 | 26 | 27 | class LuaEditor : public QTextEdit 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | LuaEditor(QWidget* pa=0); 33 | ~LuaEditor(); 34 | void lineWidgetPaintEvent(QPaintEvent*); 35 | int lineWidgetWidth(); 36 | 37 | public slots: 38 | bool save(); 39 | bool load(QString filename=QString()); 40 | bool saveAs(QString filename=QString()); 41 | QString scriptFile() const; 42 | void setCurrentFont(const QFont&); 43 | 44 | signals: 45 | void scriptLoaded(); 46 | void scriptSaved(); 47 | 48 | protected: 49 | void resizeEvent(QResizeEvent*); 50 | void keyPressEvent(QKeyEvent*); 51 | void scrollContentsBy(int dx, int dy); 52 | QTextBlock getFirstVisibleBlock(); 53 | QString script_filename; 54 | QWidget* parent; 55 | QWidget* lineWidget; 56 | Highlighter* highlighter; 57 | 58 | private slots: 59 | void highlightCurrentLine(); 60 | void updateLineWidgetWidth(int); 61 | }; 62 | 63 | 64 | class LineWidget : public QWidget 65 | { 66 | Q_OBJECT 67 | 68 | public: 69 | LineWidget(LuaEditor* editor); 70 | QSize sizeHint() const; 71 | 72 | protected: 73 | void paintEvent(QPaintEvent *event); 74 | 75 | private: 76 | LuaEditor* luaEditor; 77 | }; 78 | 79 | 80 | 81 | } 82 | 83 | #endif 84 | -------------------------------------------------------------------------------- /src/viewerpresetsmodel.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef VIEWERPRESETSMODEL_H 19 | #define VIEWERPRESETSMODEL_H 20 | 21 | #include 22 | #include 23 | 24 | #include "flam3util.h" 25 | 26 | class ViewerPresetsModel : public QAbstractListModel 27 | { 28 | Q_OBJECT 29 | 30 | QMap presets; 31 | QStringList names; 32 | ViewerPresetsModel(); 33 | static ViewerPresetsModel* singleInstance; 34 | 35 | public: 36 | static ViewerPresetsModel* getInstance(); 37 | QVariant data(const QModelIndex& index, int role=Qt::DisplayRole) const; 38 | int rowCount(const QModelIndex& parent=QModelIndex() ) const; 39 | Qt::ItemFlags flags(const QModelIndex& index) const; 40 | QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const; 41 | bool setData(const QModelIndex& index, const QVariant& value, int role); 42 | QStringList presetNames(); 43 | void applyPreset(const QString&, flam3_genome*); 44 | flam3_genome preset(const QString&); 45 | 46 | public slots: 47 | void addPresetSlot(const QString& name, flam3_genome* genome); 48 | void delPresetSlot(int idx); 49 | void updatePresetSlot(int idx, const QString& name, flam3_genome* genome); 50 | void moveUpSlot(int idx); 51 | void moveDownSlot(int idx); 52 | 53 | 54 | protected: 55 | void loadPresets(); 56 | void savePresets(); 57 | void loadDefaultPresets(); 58 | }; 59 | 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /src/lua/luathreadadapter.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef LUATHREADADAPTER_H 19 | #define LUATHREADADAPTER_H 20 | 21 | #include 22 | #include 23 | 24 | #include "luathread.h" 25 | 26 | 27 | class BasisTriangle; 28 | class MainWindow; 29 | 30 | namespace Lua 31 | { 32 | 33 | class LuaThreadAdapter : public QObject 34 | { 35 | Q_OBJECT 36 | 37 | MainWindow* m_win; 38 | LuaThread* m_thread; 39 | QList m_modified; 40 | QMutex m_mutex; 41 | 42 | public: 43 | static const char RegKey; 44 | 45 | LuaThreadAdapter(MainWindow*, LuaThread*, QObject* =0); 46 | ~LuaThreadAdapter(); 47 | 48 | GenomeVector* genomeVector(); 49 | BasisTriangle* basisTriangle(); 50 | LuaThread* thread() const; 51 | MainWindow* window() const; 52 | QList& modifiedList(); 53 | void setModified(int, bool =true); 54 | void insertModified(int, bool =true); 55 | void removeModified(int); 56 | void resetModified(bool =false); 57 | void renderPreview(int =0); 58 | void update(int =0); 59 | bool loadFile(const QString&); 60 | bool saveFile(const QString&); 61 | bool saveImage(const QString&, int =0); 62 | void listen(bool); 63 | 64 | public slots: 65 | void flameRenderedSlot(RenderEvent* e); 66 | void mainWindowChangedSlot(); 67 | 68 | signals: 69 | void loadFileSignal(const QString&); 70 | void updateSignal(); 71 | 72 | private: 73 | void waitForEvent(); 74 | }; 75 | 76 | } 77 | 78 | #endif 79 | -------------------------------------------------------------------------------- /src/colorlabel.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | 25 | #include "colorlabel.h" 26 | #include "colordialog.h" 27 | #include "checkersbrush.h" 28 | 29 | ColorLabel::ColorLabel(QWidget* parent) 30 | : QLabel(parent), lastcolor(Qt::black) 31 | { 32 | } 33 | 34 | void ColorLabel::mousePressEvent(QMouseEvent* /*e*/) 35 | { 36 | static QColor c; 37 | if (objectName() == "m_backgroundLabel") 38 | { 39 | ColorDialog d(this); 40 | d.setSelectedColor(lastcolor); 41 | d.setAlphaEnabled(false); 42 | connect(&d, SIGNAL(colorSelected(QColor)), 43 | this, SIGNAL(colorSelected(QColor))); 44 | if (d.exec() == QDialog::Accepted) 45 | { 46 | c = d.getSelectedColor(); 47 | if (c.isValid() && lastcolor != c) 48 | setColor(c); 49 | emit undoStateSignal(); 50 | } 51 | else if (d.getSelectedColor() != lastcolor) 52 | emit colorSelected(lastcolor); 53 | disconnect(&d); 54 | } 55 | else if (objectName() == "m_colorLabel") 56 | { 57 | 58 | } 59 | } 60 | 61 | 62 | void ColorLabel::setColor(QColor c) 63 | { 64 | QSize s = maximumSize(); 65 | QImage label(s.width(), s.height(), QImage::Format_RGB32); 66 | QPainter p(&label); 67 | if (c.alpha() < 255) 68 | p.fillRect(label.rect(), CheckersBrush(15)); 69 | p.fillRect(label.rect(), QBrush(c)); 70 | setPixmap(QPixmap::fromImage( label )); 71 | lastcolor = c; 72 | } 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /src/mainpreviewwidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef MAINPREVIEWWIDGET_H 20 | #define MAINPREVIEWWIDGET_H 21 | 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | #include "ui_mainpreviewwidget.h" 28 | #include "genomevector.h" 29 | #include "qosmicwidget.h" 30 | 31 | class MainPreviewWidget 32 | : public QWidget, public QosmicWidget, private Ui::MainPreviewWidget 33 | { 34 | Q_OBJECT 35 | 36 | GenomeVector* genome; 37 | QMenu* popupMenu; 38 | QTimer* wheel_stopped_timer; 39 | bool wheel_moved; 40 | QPointF last_pos; 41 | QPointF start_pos; 42 | QSize last_size; 43 | QString null_preset; 44 | QString selected_preset; 45 | 46 | public: 47 | MainPreviewWidget(GenomeVector* g, QWidget* parent=0); 48 | void setPixmap(const QPixmap&); 49 | QSize getPreviewSize() const; 50 | void setPreviewMaximumSize(QSize); 51 | bool isPresetSelected() const; 52 | QString presetName() const; 53 | flam3_genome preset() const; 54 | 55 | signals: 56 | void previewResized(const QSize&); 57 | void previewMoved(); 58 | void undoStateSignal(); 59 | 60 | public slots: 61 | void popupMenuTriggeredSlot(QAction*); 62 | 63 | protected: 64 | void resizeEvent(QResizeEvent*); 65 | void showEvent(QShowEvent*); 66 | void mousePressEvent(QMouseEvent*); 67 | void mouseReleaseEvent(QMouseEvent*); 68 | void mouseMoveEvent(QMouseEvent*); 69 | void wheelEvent(QWheelEvent*); 70 | void closeEvent(QCloseEvent*); 71 | }; 72 | 73 | 74 | #endif 75 | -------------------------------------------------------------------------------- /icons/silk/bullet_arrow_up.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *bullet_arrow_up[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 56 1", 5 | " c #5BF65BF65BF6", 6 | ". c #5D915D915D91", 7 | "X c #5FDA5FDA5FDA", 8 | "o c #618961896189", 9 | "O c #62CD62CD62CD", 10 | "+ c #65FC65FC65FC", 11 | "@ c #67AC67AC67AC", 12 | "# c #698469846984", 13 | "$ c #6DA36DA36DA3", 14 | "% c #6E256E256E25", 15 | "& c #6F796F796F79", 16 | "* c #71F071F071F0", 17 | "= c #742674267426", 18 | "- c #768076807680", 19 | "; c #76FE76FE76FE", 20 | ": c #792A792A792A", 21 | "> c #7B567B567B56", 22 | ", c #7CBC7CBC7CBC", 23 | "< c #7E467E467E46", 24 | "1 c #80C680C680C6", 25 | "2 c #82B982B982B9", 26 | "3 c #839983998399", 27 | "4 c #851585158515", 28 | "5 c #866C866C866C", 29 | "6 c #888288828882", 30 | "7 c #8B898B898B89", 31 | "8 c #8DF48DF48DF4", 32 | "9 c #8E708E708E70", 33 | "0 c #8F138F138F13", 34 | "q c #90D990D990D9", 35 | "w c #91A691A691A6", 36 | "e c #929892989298", 37 | "r c #94BC94BC94BC", 38 | "t c #967E967E967E", 39 | "y c #99B799B799B7", 40 | "u c #9AC39AC39AC3", 41 | "i c #9C559C559C55", 42 | "p c #9D3F9D3F9D3F", 43 | "a c #9E799E799E79", 44 | "s c #A0ADA0ADA0AD", 45 | "d c #A16BA16BA16B", 46 | "f c #A2BBA2BBA2BB", 47 | "g c #A3B5A3B5A3B5", 48 | "h c #A441A441A441", 49 | "j c #A560A560A560", 50 | "k c #A6DBA6DBA6DB", 51 | "l c #A7CBA7CBA7CB", 52 | "z c #A8BBA8BBA8BB", 53 | "x c #A96BA96BA96B", 54 | "c c #AACAAACAAACA", 55 | "v c #ABB2ABB2ABB2", 56 | "b c #ACB1ACB1ACB1", 57 | "n c #ADF3ADF3ADF3", 58 | "m c #AF0CAF0CAF0C", 59 | "M c #AFF6AFF6AFF6", 60 | "N c None", 61 | /* pixels */ 62 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 63 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 64 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 65 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 66 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 67 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 68 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 69 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 70 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 71 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 72 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 73 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 74 | "NNNNNNNNNNNNNNvvNNNNNNNNNNNNNNNN", 75 | "NNNNNNNNNNNNNNvxNNNNNNNNNNNNNNNN", 76 | "NNNNNNNNNNNNkzckueNNNNNNNNNNNNNN", 77 | "NNNNNNNNNNNNkzbluwNNNNNNNNNNNNNN", 78 | "NNNNNNNNNNfhkcmcaw2:NNNNNNNNNNNN", 79 | "NNNNNNNNNNgjxbMbfr4>NNNNNNNNNNNN", 80 | "NNNNNNNNasglbmncju7<&NNNNNNNNNNN", 81 | "NNNNNNNNyuiadspyt03;#oNNNNNNNNNN", 82 | "NNNNNNNNeq87641,:=%@o.NNNNNNNNNN", 83 | "NNNNNNNN9751>-*$#+OX. NNNNNNNNNN", 84 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 85 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 86 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 87 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 88 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 89 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 90 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 91 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 92 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 93 | "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" 94 | }; 95 | -------------------------------------------------------------------------------- /src/triangleselection.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef TRIANGLESELECTION_H 19 | #define TRIANGLESELECTION_H 20 | 21 | #include 22 | 23 | #include "transformablegraphicsitem.h" 24 | 25 | class Triangle; 26 | class FigureEditor; 27 | class BasisTriangle; 28 | class NodeItem; 29 | 30 | class TriangleSelection : public QGraphicsPolygonItem, public TransformableGraphicsItem 31 | { 32 | private: 33 | FigureEditor* m_editor; 34 | BasisTriangle* m_basis; 35 | QList m_triangles; 36 | QList m_nodes; 37 | int m_selectType; 38 | 39 | public: 40 | TriangleSelection(FigureEditor*, BasisTriangle*); 41 | ~TriangleSelection(); 42 | int type() const; 43 | BasisTriangle* basis() const; 44 | FigureEditor* editor() const; 45 | void moveBy(double, double); 46 | void flipHorizontally(QPointF); 47 | void flipVertically(QPointF); 48 | void scale(double, double, QPointF); 49 | void rotate(double, QPointF); 50 | int selectedType() const; 51 | void setSelectedType(int); 52 | void selectCoveredItems(); 53 | bool hasItems() const; 54 | void clear(); 55 | QList triangles() const; 56 | QList nodes() const; 57 | Triangle* first(); 58 | void addItem(QGraphicsItem*); 59 | QList allItems() const; 60 | bool contains(QGraphicsItem* item) const; 61 | bool containsAnyOf(Triangle*) const; 62 | void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget =0); 63 | 64 | enum { Type = UserType + 5 }; 65 | }; 66 | 67 | 68 | #endif 69 | -------------------------------------------------------------------------------- /icons/silk/bullet_arrow_down.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *bullet_arrow_down[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 58 1", 5 | " c #6FE76FE76FE7", 6 | ". c #706070607060", 7 | "X c #739D739D739D", 8 | "o c #779A779A779A", 9 | "O c #78DB78DB78DB", 10 | "+ c #7AE77AE77AE7", 11 | "@ c #7B887B887B88", 12 | "# c #7CE47CE47CE4", 13 | "$ c #7F447F447F44", 14 | "% c #813481348134", 15 | "& c #82E982E982E9", 16 | "* c #84E584E584E5", 17 | "= c #85F485F485F4", 18 | "- c #870587058705", 19 | "; c #881188118811", 20 | ": c #89B189B189B1", 21 | "> c #8AF18AF18AF1", 22 | ", c #8B468B468B46", 23 | "< c #8EAF8EAF8EAF", 24 | "1 c #8FC58FC58FC5", 25 | "2 c #916191619161", 26 | "3 c #93D493D493D4", 27 | "4 c #958F958F958F", 28 | "5 c #963296329632", 29 | "6 c #975B975B975B", 30 | "7 c #991299129912", 31 | "8 c #9A029A029A02", 32 | "9 c #9AD29AD29AD2", 33 | "0 c #9D5E9D5E9D5E", 34 | "q c #9FB39FB39FB3", 35 | "w c #A0AEA0AEA0AE", 36 | "e c #A184A184A184", 37 | "r c #A3A4A3A4A3A4", 38 | "t c #A4B1A4B1A4B1", 39 | "y c #A671A671A671", 40 | "u c #A7E8A7E8A7E8", 41 | "i c #A8FDA8FDA8FD", 42 | "p c #A98AA98AA98A", 43 | "a c #AB66AB66AB66", 44 | "s c #AD29AD29AD29", 45 | "d c #AD4EAD4EAD4E", 46 | "f c #B0C6B0C6B0C6", 47 | "g c #B185B185B185", 48 | "h c #B3C4B3C4B3C4", 49 | "j c #B50DB50DB50D", 50 | "k c #B536B536B536", 51 | "l c #B68BB68BB68B", 52 | "z c #B81BB81BB81B", 53 | "x c #B8EAB8EAB8EA", 54 | "c c #B9BFB9BFB9BF", 55 | "v c #BA9CBA9CBA9C", 56 | "b c #BBE1BBE1BBE1", 57 | "n c #BCB7BCB7BCB7", 58 | "m c #BDD6BDD6BDD6", 59 | "M c #BEB9BEB9BEB9", 60 | "N c #BFA5BFA5BFA5", 61 | "B c #C137C137C137", 62 | "V c None", 63 | /* pixels */ 64 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 65 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 66 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 67 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 68 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 69 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 70 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 71 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 72 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 73 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 74 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 75 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 76 | "VVVVVVVVBNnxkgditq952VVVVVVVVVV", 78 | "VVVVVVVVcvvbnbzjgae5:&VVVVVVVVVV", 79 | "VVVVVVVVllklcvclgu91*VVVVVVVVVVV", 80 | "VVVVVVVVVVppdfhfy7:%VVVVVVVVVVVV", 81 | "VVVVVVVVVVewwrit6>$oVVVVVVVVVVVV", 82 | "VVVVVVVVVVVV2384=#VVVVVVVVVVVVVV", 83 | "VVVVVVVVVVVV;:,-@XVVVVVVVVVVVVVV", 84 | "VVVVVVVVVVVVVV+OVVVVVVVVVVVVVVVV", 85 | "VVVVVVVVVVVVVV. VVVVVVVVVVVVVVVV", 86 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 87 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 88 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 89 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 90 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 91 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 92 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 93 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 94 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 95 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV" 96 | }; 97 | -------------------------------------------------------------------------------- /icons/silk/bullet_arrow_left.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *bullet_arrow_left[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 58 1", 5 | " c #6FE76FE76FE7", 6 | ". c #706070607060", 7 | "X c #739D739D739D", 8 | "o c #779A779A779A", 9 | "O c #78DB78DB78DB", 10 | "+ c #7AE77AE77AE7", 11 | "@ c #7B887B887B88", 12 | "# c #7CE47CE47CE4", 13 | "$ c #7F447F447F44", 14 | "% c #813481348134", 15 | "& c #82E982E982E9", 16 | "* c #84E584E584E5", 17 | "= c #85F485F485F4", 18 | "- c #870587058705", 19 | "; c #881188118811", 20 | ": c #89B189B189B1", 21 | "> c #8AF18AF18AF1", 22 | ", c #8B468B468B46", 23 | "< c #8EAF8EAF8EAF", 24 | "1 c #8FC58FC58FC5", 25 | "2 c #916191619161", 26 | "3 c #93D493D493D4", 27 | "4 c #958F958F958F", 28 | "5 c #963296329632", 29 | "6 c #975B975B975B", 30 | "7 c #991299129912", 31 | "8 c #9A029A029A02", 32 | "9 c #9AD29AD29AD2", 33 | "0 c #9D5E9D5E9D5E", 34 | "q c #9FB39FB39FB3", 35 | "w c #A0AEA0AEA0AE", 36 | "e c #A184A184A184", 37 | "r c #A3A4A3A4A3A4", 38 | "t c #A4B1A4B1A4B1", 39 | "y c #A671A671A671", 40 | "u c #A7E8A7E8A7E8", 41 | "i c #A8FDA8FDA8FD", 42 | "p c #A98AA98AA98A", 43 | "a c #AB66AB66AB66", 44 | "s c #AD29AD29AD29", 45 | "d c #AD4EAD4EAD4E", 46 | "f c #B0C6B0C6B0C6", 47 | "g c #B185B185B185", 48 | "h c #B3C4B3C4B3C4", 49 | "j c #B50DB50DB50D", 50 | "k c #B536B536B536", 51 | "l c #B68BB68BB68B", 52 | "z c #B81BB81BB81B", 53 | "x c #B8EAB8EAB8EA", 54 | "c c #B9BFB9BFB9BF", 55 | "v c #BA9CBA9CBA9C", 56 | "b c #BBE1BBE1BBE1", 57 | "n c #BCB7BCB7BCB7", 58 | "m c #BDD6BDD6BDD6", 59 | "M c #BEB9BEB9BEB9", 60 | "N c #BFA5BFA5BFA5", 61 | "B c #C137C137C137", 62 | "V c None", 63 | /* pixels */ 64 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 65 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 66 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 67 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 68 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 69 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 70 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 71 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 72 | "VVVVVVVVVVVVVVVVlcMBVVVVVVVVVVVV", 73 | "VVVVVVVVVVVVVVVVlvmNVVVVVVVVVVVV", 74 | "VVVVVVVVVVVVVVepkvbnVVVVVVVVVVVV", 75 | "VVVVVVVVVVVVVVwplbcxVVVVVVVVVVVV", 76 | "VVVVVVVVVVVV;2wdcnzkVVVVVVVVVVVV", 77 | "VVVVVVVVVVVV:3rfvbjgVVVVVVVVVVVV", 78 | "VVVVVVVVVV.+,8ihczfdVVVVVVVVVVVV", 79 | "VVVVVVVVVV O-4tfljsiVVVVVVVVVVVV", 80 | "VVVVVVVVVVVV@=6yggitVVVVVVVVVVVV", 81 | "VVVVVVVVVVVVX#>7uarqVVVVVVVVVVVV", 82 | "VVVVVVVVVVVVVV$:9e09VVVVVVVVVVVV", 83 | "VVVVVVVVVVVVVVo%1555VVVVVVVVVVVV", 84 | "VVVVVVVVVVVVVVVV*:<2VVVVVVVVVVVV", 85 | "VVVVVVVVVVVVVVVVV&> c #8AF18AF18AF1", 22 | ", c #8B468B468B46", 23 | "< c #8EAF8EAF8EAF", 24 | "1 c #8FC58FC58FC5", 25 | "2 c #916191619161", 26 | "3 c #93D493D493D4", 27 | "4 c #958F958F958F", 28 | "5 c #963296329632", 29 | "6 c #975B975B975B", 30 | "7 c #991299129912", 31 | "8 c #9A029A029A02", 32 | "9 c #9AD29AD29AD2", 33 | "0 c #9D5E9D5E9D5E", 34 | "q c #9FB39FB39FB3", 35 | "w c #A0AEA0AEA0AE", 36 | "e c #A184A184A184", 37 | "r c #A3A4A3A4A3A4", 38 | "t c #A4B1A4B1A4B1", 39 | "y c #A671A671A671", 40 | "u c #A7E8A7E8A7E8", 41 | "i c #A8FDA8FDA8FD", 42 | "p c #A98AA98AA98A", 43 | "a c #AB66AB66AB66", 44 | "s c #AD29AD29AD29", 45 | "d c #AD4EAD4EAD4E", 46 | "f c #B0C6B0C6B0C6", 47 | "g c #B185B185B185", 48 | "h c #B3C4B3C4B3C4", 49 | "j c #B50DB50DB50D", 50 | "k c #B536B536B536", 51 | "l c #B68BB68BB68B", 52 | "z c #B81BB81BB81B", 53 | "x c #B8EAB8EAB8EA", 54 | "c c #B9BFB9BFB9BF", 55 | "v c #BA9CBA9CBA9C", 56 | "b c #BBE1BBE1BBE1", 57 | "n c #BCB7BCB7BCB7", 58 | "m c #BDD6BDD6BDD6", 59 | "M c #BEB9BEB9BEB9", 60 | "N c #BFA5BFA5BFA5", 61 | "B c #C137C137C137", 62 | "V c None", 63 | /* pixels */ 64 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 65 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 66 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 67 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 68 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 69 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 70 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 71 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 72 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 73 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 74 | "VVVVVVVVVVVV<>&VVVVVVVVVVVVVVVVV", 75 | "VVVVVVVVVVVV2<:*VVVVVVVVVVVVVVVV", 76 | "VVVVVVVVVVVV5551%oVVVVVVVVVVVVVV", 77 | "VVVVVVVVVVVV90e9:$VVVVVVVVVVVVVV", 78 | "VVVVVVVVVVVVqrau7>#XVVVVVVVVVVVV", 79 | "VVVVVVVVVVVVtiggy6=@VVVVVVVVVVVV", 80 | "VVVVVVVVVVVVisjlft4-O VVVVVVVVVV", 81 | "VVVVVVVVVVVVdfzchi8,+.VVVVVVVVVV", 82 | "VVVVVVVVVVVVgjbvfr3:VVVVVVVVVVVV", 83 | "VVVVVVVVVVVVkzncdw2;VVVVVVVVVVVV", 84 | "VVVVVVVVVVVVxcblpwVVVVVVVVVVVVVV", 85 | "VVVVVVVVVVVVnbvkpeVVVVVVVVVVVVVV", 86 | "VVVVVVVVVVVVNmvlVVVVVVVVVVVVVVVV", 87 | "VVVVVVVVVVVVBMclVVVVVVVVVVVVVVVV", 88 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 89 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 90 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 91 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 92 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 93 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 94 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 95 | "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV" 96 | }; 97 | -------------------------------------------------------------------------------- /src/selectgenomewidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef SELECTGENOMEWIDGET_H 19 | #define SELECTGENOMEWIDGET_H 20 | 21 | #include 22 | 23 | #include "ui_selectgenomewidget.h" 24 | 25 | #include "genomevector.h" 26 | #include "qosmicwidget.h" 27 | 28 | class SelectGenomeWidget : public QWidget, public QosmicWidget, 29 | private Ui::SelectGenomeWidget 30 | { 31 | Q_OBJECT 32 | 33 | public: 34 | SelectGenomeWidget(GenomeVector*, QWidget* parent=0); 35 | void setSelectedGenome(int); 36 | void reset(); 37 | 38 | signals: 39 | void genomeSelected(int); 40 | void genomesModified(); 41 | 42 | protected slots: 43 | void addButtonPressedSlot(); 44 | void delButtonPressedSlot(); 45 | void configButtonPressedSlot(); 46 | void clearTrianglesButtonPressedSlot(); 47 | void listViewClickedAction(const QModelIndex& idx); 48 | 49 | protected: 50 | void showEvent(QShowEvent*); 51 | void hideEvent(QHideEvent*); 52 | 53 | private: 54 | GenomeVector* genomes; 55 | }; 56 | 57 | 58 | #include "ui_selectgenomeconfigdialog.h" 59 | 60 | class SelectGenomeConfigDialog : public QDialog, private Ui::SelectGenomeConfigDialog 61 | { 62 | Q_OBJECT 63 | 64 | public: 65 | SelectGenomeConfigDialog(QWidget* parent=0); 66 | void setPreviewSize(const QSize& size); 67 | QSize previewSize() const; 68 | void setPreset(const QString &s); 69 | QString preset() const; 70 | void setAutoSave(const GenomeVector::AutoSave); 71 | void setTimeStep(const double); 72 | double timeStep() const; 73 | GenomeVector::AutoSave autoSave() const; 74 | }; 75 | 76 | #endif 77 | -------------------------------------------------------------------------------- /src/snapslider.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #include "snapslider.h" 20 | 21 | SnapSlider::SnapSlider(QWidget* parent) 22 | : QSlider(Qt::Horizontal, parent) 23 | { 24 | m_selected_value = 0; 25 | m_last_value = 0; 26 | m_snap = 0; 27 | connect(this, SIGNAL(rangeChanged(int,int)), 28 | this, SLOT(rangeChangedAction(int,int))); 29 | connect(this, SIGNAL(sliderReleased()), 30 | this, SLOT(sliderReleasedAction())); 31 | connect(this, SIGNAL(valueChanged(int)), 32 | this, SLOT(sliderChangedAction(int))); 33 | } 34 | 35 | int SnapSlider::dx() 36 | { 37 | return m_dx; 38 | } 39 | 40 | void SnapSlider::setSnap(int value) 41 | { 42 | m_snap = value; 43 | } 44 | 45 | int SnapSlider::snap() 46 | { 47 | return m_snap; 48 | } 49 | 50 | int SnapSlider::selectedValue() 51 | { 52 | return m_selected_value; 53 | } 54 | 55 | void SnapSlider::rangeChangedAction(int min, int max) 56 | { 57 | if (m_snap < min || m_snap > max) 58 | m_snap = (int)((double)(max - min) / 2.0); 59 | setValue(m_snap); 60 | } 61 | 62 | void SnapSlider::sliderReleasedAction() 63 | { 64 | m_selected_value = value(); 65 | if (signalsBlocked()) 66 | setValue(m_snap); 67 | else 68 | { 69 | blockSignals(true); 70 | setValue(m_snap); 71 | blockSignals(false); 72 | } 73 | m_last_value = m_snap; 74 | emit valueSelected(m_selected_value); 75 | emit undoStateSignal(); 76 | } 77 | 78 | void SnapSlider::sliderChangedAction(int value) 79 | { 80 | m_dx = value - m_last_value; 81 | m_last_value = value; 82 | } 83 | 84 | void SnapSlider::setToSnap() 85 | { 86 | blockSignals(true); 87 | sliderReleasedAction(); 88 | blockSignals(false); 89 | } 90 | -------------------------------------------------------------------------------- /src/chaoswidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef CHAOSWIDGET_H 20 | #define CHAOSWIDGET_H 21 | 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | #include "genomevector.h" 28 | #include "triangle.h" 29 | 30 | class ChaosTableView : public QTableView 31 | { 32 | Q_OBJECT 33 | 34 | public: 35 | ChaosTableView(QWidget* =0); 36 | void setPrecision(int); 37 | int precision(); 38 | void restoreSettings(); 39 | 40 | signals: 41 | void valueUpdated(); 42 | void undoStateSignal(); 43 | void precisionChanged(); 44 | 45 | protected: 46 | void mousePressEvent(QMouseEvent*); 47 | void mouseMoveEvent(QMouseEvent*); 48 | void mouseReleaseEvent(QMouseEvent*); 49 | void keyPressEvent(QKeyEvent*); 50 | void resetChaosValue(QModelIndex&); 51 | 52 | protected slots: 53 | void commitData(QWidget*); 54 | 55 | private: 56 | double step; 57 | double start_value; 58 | QModelIndex start_item; 59 | QPointF last_pos; 60 | int vars_precision; 61 | }; 62 | 63 | #include "ui_chaoswidget.h" 64 | 65 | class ChaosWidget : public QWidget, private Ui::ChaosWidget 66 | { 67 | Q_OBJECT 68 | 69 | public: 70 | ChaosWidget(GenomeVector*, QWidget* parent=0); 71 | ~ChaosWidget(); 72 | 73 | public slots: 74 | void triangleSelectedSlot(Triangle* t); 75 | void updateFormData(); 76 | 77 | signals: 78 | void dataChanged(); 79 | void undoStateSignal(); 80 | 81 | protected: 82 | void wheelEvent(QWheelEvent*); 83 | 84 | private: 85 | GenomeVector* genomes; 86 | Triangle* selectedTriangle; 87 | QStandardItemModel* model; 88 | }; 89 | 90 | #endif 91 | -------------------------------------------------------------------------------- /src/editmodeselectorwidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef EDITMODESELECTORWIDGET_H 19 | #define EDITMODESELECTORWIDGET_H 20 | 21 | #include 22 | 23 | #include "ui_editmodeselectorwidget.h" 24 | #include "xfedit.h" 25 | 26 | class EditModeSelectorWidget : public QWidget, private Ui::EditModeSelectorWidget 27 | { 28 | Q_OBJECT 29 | 30 | FigureEditor* m_xfeditor; 31 | Triangle* selectedTriangle; 32 | QButtonGroup m_buttonGroup; 33 | double lastRotateValue; 34 | 35 | public: 36 | EditModeSelectorWidget(FigureEditor*, QWidget* parent=0); 37 | void setFigureEditor(FigureEditor*); 38 | int selectedButton(); 39 | void reset(); 40 | 41 | public slots: 42 | void setSelectedButton(FigureEditor::EditMode); 43 | void triangleSelectedSlot(Triangle*); 44 | 45 | signals: 46 | void buttonPressed(FigureEditor::EditMode); 47 | void undoStateSignal(); 48 | 49 | private slots: 50 | void groupButtonPressedSlot(int); 51 | void triangleRotateAction(); 52 | void triangleRotateCWAction(); 53 | void triangleRotateCCWAction(); 54 | void moveTriangleLeftAction(); 55 | void moveTriangleRightAction(); 56 | void moveTriangleUpAction(); 57 | void moveTriangleDownAction(); 58 | void rotateTextEditedSlot(); 59 | void toggleMarkAction(bool); 60 | void triangleScaleUpAction(); 61 | void triangleScaleDownAction(); 62 | void sceneAxesSelected(int); 63 | void selectionItemsChangedAction(int); 64 | void sceneScaledSlot(); 65 | void sceneCenteredSlot(int); 66 | void sceneConfigSlot(); 67 | void buttonReleasedSlot(); 68 | 69 | protected: 70 | void closeEvent(QCloseEvent*); 71 | 72 | }; 73 | 74 | 75 | #endif 76 | -------------------------------------------------------------------------------- /src/transformablegraphicsguide.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #ifndef TRANSFORMABLEGRAPHICSGUIDE_H 20 | #define TRANSFORMABLEGRAPHICSGUIDE_H 21 | 22 | #include 23 | #include 24 | 25 | #include "xfedit.h" 26 | 27 | class GraphicsGuideScaleButton : public QGraphicsRectItem 28 | { 29 | public: 30 | enum { Type = UserType + 7 }; 31 | 32 | enum Location { TopRight, TopLeft, BottomRight, BottomLeft }; 33 | 34 | Location location; 35 | QPen std_pen; 36 | 37 | GraphicsGuideScaleButton(QGraphicsItem* =0); 38 | int type() const; 39 | 40 | protected: 41 | void hoverEnterEvent(QGraphicsSceneHoverEvent*); 42 | void hoverLeaveEvent(QGraphicsSceneHoverEvent*); 43 | }; 44 | 45 | 46 | class TransformableGraphicsGuide : public QGraphicsObject 47 | { 48 | Q_OBJECT 49 | 50 | FigureEditor* editor; 51 | QRectF outerRect; 52 | QPolygonF hFlipPoly; 53 | QPolygonF vFlipPoly; 54 | GraphicsGuideScaleButton topLeftRect; 55 | GraphicsGuideScaleButton topRightRect; 56 | GraphicsGuideScaleButton bottomLeftRect; 57 | GraphicsGuideScaleButton bottomRightRect; 58 | GraphicsGuideScaleButton bottomRect; 59 | GraphicsGuideScaleButton topRect; 60 | GraphicsGuideScaleButton leftRect; 61 | GraphicsGuideScaleButton rightRect; 62 | 63 | public: 64 | explicit TransformableGraphicsGuide(FigureEditor*, QGraphicsItem* =0); 65 | QRectF boundingRect() const; 66 | void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget* =0); 67 | void setParentItem(QGraphicsItem*); 68 | void setVisible(bool); 69 | void update(); 70 | QPainterPath shape() const; 71 | }; 72 | 73 | 74 | #endif // TRANSFORMABLEGRAPHICSGUIDE_H 75 | -------------------------------------------------------------------------------- /src/scripteditwidget.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef SCRIPTEDITWIDGET_H 19 | #define SCRIPTEDITWIDGET_H 20 | 21 | #include "ui_scripteditwidget.h" 22 | #include "lua/luathread.h" 23 | 24 | class MainWindow; 25 | 26 | class ScriptEditWidget : public QWidget, private Ui::ScriptEditWidget 27 | { 28 | Q_OBJECT 29 | 30 | QString script_filename; 31 | Lua::LuaThread lua_thread; 32 | MainWindow* mw; 33 | 34 | public: 35 | ScriptEditWidget(MainWindow* m, QWidget *parent = 0); 36 | ~ScriptEditWidget(); 37 | bool isScriptRunning() const; 38 | 39 | public slots: 40 | void startScript(); 41 | void stopScript(); 42 | void scriptFinishedAction(); 43 | void scriptLoadedAction(); 44 | void scriptSavedAction(); 45 | void loadScript(const QString&); 46 | void scriptInputDialog(const QString&, const QString&); 47 | 48 | protected slots: 49 | void runButtonPressedAction(); 50 | void updateCursorLabel(); 51 | void appendScriptOutput(const QString&); 52 | void configPressedAction(); 53 | 54 | protected: 55 | void closeEvent(QCloseEvent*); 56 | }; 57 | 58 | 59 | #include "ui_scripteditconfigdialog.h" 60 | 61 | class ScriptEditConfigDialog : public QDialog, private Ui::ScriptEditConfigDialog 62 | { 63 | Q_OBJECT 64 | 65 | QFontDatabase fonts; 66 | QString cur_size; 67 | 68 | public: 69 | explicit ScriptEditConfigDialog(QWidget* =0); 70 | void setFont(const QFont&); 71 | QFont getFont() const; 72 | void setLuaEnvText(const QString&); 73 | QString getLuaEnvText() const; 74 | 75 | protected slots: 76 | void fontSelectBoxChanged(const QFont&); 77 | 78 | protected: 79 | void changeEvent(QEvent*); 80 | }; 81 | 82 | 83 | #endif 84 | -------------------------------------------------------------------------------- /src/lua/luathread.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #ifndef LUATHREAD_H 19 | #define LUATHREAD_H 20 | 21 | #include 22 | 23 | #include "flam3util.h" 24 | #include "lunar.h" 25 | #include "frame.h" 26 | #include "renderthread.h" 27 | 28 | class MainWindow; 29 | class LuaThreadAdapter; 30 | namespace Lua 31 | { 32 | 33 | class LuaThread : public QThread 34 | { 35 | Q_OBJECT 36 | 37 | LuaThreadAdapter* thread_adapter; 38 | QString lua_text; 39 | QString lua_errstr; 40 | QString lua_paths; 41 | bool lua_stopluathread_script; 42 | randctx ctx; 43 | bool input_response; 44 | bool input_response_ok; 45 | QString input_response_text; 46 | 47 | public: 48 | LuaThread(MainWindow* m, QObject* parent=0); 49 | ~LuaThread(); 50 | void msleep(unsigned long msecs); 51 | virtual void run(); 52 | void setLuaText(QString); 53 | const QString& luaText(); 54 | void setLuaPaths(const QString&); 55 | QString luaPaths() const; 56 | void stopScript(); 57 | bool stopping() const; 58 | QString getMessage(); 59 | void emitScriptOutput(const QString&); 60 | void emitScriptInputRequest(const QString&, const QString&); 61 | static int lua_stopluathread(lua_State*); 62 | static int lua_irand(lua_State*); 63 | static int lua_msleep(lua_State*); 64 | static int lua_print(lua_State*); 65 | static int lua_dialog(lua_State*); 66 | void scriptInputResponse(bool, QString&); 67 | 68 | signals: 69 | void scriptFinished(); 70 | void scriptStopped(); 71 | void scriptHasOutput(const QString&); 72 | void scriptInputRequest(const QString&, const QString&); 73 | 74 | protected: 75 | void lua_load_environment(lua_State*); 76 | 77 | }; 78 | } 79 | 80 | 81 | #endif 82 | -------------------------------------------------------------------------------- /src/renderprogressdialog.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | #include 19 | 20 | #include "renderprogressdialog.h" 21 | 22 | RenderProgressDialog::RenderProgressDialog(QWidget* parent, RenderThread* thread) 23 | : QDialog(parent, Qt::Dialog), m_rthread(thread), m_showMainViewer(false) 24 | { 25 | setupUi(this); 26 | setModal(true); 27 | 28 | m_yesButton->setVisible(false); 29 | m_noButton->setVisible(false); 30 | m_dialogLabel->setVisible(false); 31 | m_finishedLabel.setText(tr("View rendered image?")); 32 | 33 | connect(m_yesButton, SIGNAL(pressed()), this, SLOT(yesButtonPressedSlot())); 34 | connect(m_rthread, SIGNAL(statusUpdated(RenderStatus*)), 35 | this, SLOT(setRenderStatus(RenderStatus*))); 36 | } 37 | 38 | 39 | RenderProgressDialog::~RenderProgressDialog() 40 | { 41 | } 42 | 43 | void RenderProgressDialog::yesButtonPressedSlot() 44 | { 45 | m_showMainViewer = true; 46 | accept(); 47 | } 48 | 49 | void RenderProgressDialog::setRenderStatus(RenderStatus* status) 50 | { 51 | if (status->Type == RenderRequest::File) 52 | { 53 | if (status->State == RenderStatus::Busy) 54 | m_progressBar->setValue(status->Percent); 55 | else 56 | { 57 | m_dialogLabel->setVisible(true); 58 | m_dialogLabel->setText(status->getMessage()); 59 | m_progressBar->setVisible(false); 60 | m_verticalLayout->removeWidget(m_progressBar); 61 | m_verticalLayout->insertWidget(1, &m_finishedLabel); 62 | m_yesButton->setVisible(true); 63 | m_noButton->setVisible(true); 64 | m_stopButton->setVisible(false); 65 | m_verticalLayout->invalidate(); 66 | } 67 | } 68 | } 69 | 70 | bool RenderProgressDialog::showMainViewer() 71 | { 72 | return m_showMainViewer; 73 | } 74 | -------------------------------------------------------------------------------- /icons/silk/bullet_black.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *bullet_black[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 63 1", 5 | " c #000100010001", 6 | ". c #139113911391", 7 | "X c #164916491649", 8 | "o c #171B171B171B", 9 | "O c #18E818E818E8", 10 | "+ c #1A6F1A6F1A6F", 11 | "@ c #1B061B061B06", 12 | "# c #1D261D261D26", 13 | "$ c #212521252125", 14 | "% c #225022502250", 15 | "& c #235223522352", 16 | "* c #248F248F248F", 17 | "= c #251C251C251C", 18 | "- c #268526852685", 19 | "; c #26BE26BE26BE", 20 | ": c #296029602960", 21 | "> c #2B0B2B0B2B0B", 22 | ", c #2F8D2F8D2F8D", 23 | "< c #31AE31AE31AE", 24 | "1 c #357935793579", 25 | "2 c #35FF35FF35FF", 26 | "3 c #386438643864", 27 | "4 c #397239723972", 28 | "5 c #3A5E3A5E3A5E", 29 | "6 c #3B043B043B04", 30 | "7 c #3C373C373C37", 31 | "8 c #3CC63CC63CC6", 32 | "9 c #3F273F273F27", 33 | "0 c #490A490A490A", 34 | "q c #4CAE4CAE4CAE", 35 | "w c #50EA50EA50EA", 36 | "e c #562F562F562F", 37 | "r c #57C357C357C3", 38 | "t c #582058205820", 39 | "y c #5A625A625A62", 40 | "u c #5B355B355B35", 41 | "i c #5C175C175C17", 42 | "p c #5E185E185E18", 43 | "a c #60CD60CD60CD", 44 | "s c #623262326232", 45 | "d c #631163116311", 46 | "f c #64BC64BC64BC", 47 | "g c #651B651B651B", 48 | "h c #669B669B669B", 49 | "j c #676D676D676D", 50 | "k c #684468446844", 51 | "l c #6A8B6A8B6A8B", 52 | "z c #6DBF6DBF6DBF", 53 | "x c #6E7C6E7C6E7C", 54 | "c c #6F796F796F79", 55 | "v c #70A070A070A0", 56 | "b c #71AF71AF71AF", 57 | "n c #728B728B728B", 58 | "m c #73B273B273B2", 59 | "M c #770D770D770D", 60 | "N c #788178817881", 61 | "B c #798C798C798C", 62 | "V c #7AD17AD17AD1", 63 | "C c #7C897C897C89", 64 | "Z c #80D680D680D6", 65 | "A c #836883688368", 66 | "S c #847D847D847D", 67 | "D c None", 68 | /* pixels */ 69 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 70 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 71 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 72 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 73 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 74 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 75 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 76 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 77 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 78 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 79 | "DDDDDDDDDDDDDD@+OoDDDDDDDDDDDDDD", 80 | "DDDDDDDDDDDD4887531,DDDDDDDDDDDD", 81 | "DDDDDDDDDDD4egcmblpq:DDDDDDDDDDD", 82 | "DDDDDDDDDDD7fNZAZVby:DDDDDDDDDDD", 83 | "DDDDDDDDDD+7cZMxlxNd; DDDDDDDDDD", 84 | "DDDDDDDDDDO6mScaugVh= DDDDDDDDDD", 85 | "DDDDDDDDDDX4nAzprsNg& DDDDDDDDDD", 86 | "DDDDDDDDDD.2lCbkdjnp% DDDDDDDDDD", 87 | "DDDDDDDDDDD0tshgpw9#DDDDDDDDDDD", 89 | "DDDDDDDDDDDD=-*&&%$#DDDDDDDDDDDD", 90 | "DDDDDDDDDDDDDD DDDDDDDDDDDDDD", 91 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 92 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 93 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 94 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 95 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 96 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 97 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 98 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 99 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", 100 | "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" 101 | }; 102 | -------------------------------------------------------------------------------- /icons/silk/arrow_redo.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *arrow_redo[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 64 1", 5 | " c #210E5F621DE5", 6 | ". c #223560F21E91", 7 | "X c #25C2652821D6", 8 | "o c #2A3F6B1525D9", 9 | "O c #2D6F6EF728EE", 10 | "+ c #2F1271E02A14", 11 | "@ c #316C739C2C92", 12 | "# c #34C978512EE6", 13 | "$ c #35E976EE31BD", 14 | "% c #36A179DB315A", 15 | "& c #39787B9234C6", 16 | "* c #3DA47EEE38C4", 17 | "= c #3C6F829735B2", 18 | "- c #3F4D83C139E0", 19 | "; c #42B9854B3D8A", 20 | ": c #45638CF13E1A", 21 | "> c #47B291A73F9D", 22 | ", c #465089314094", 23 | "< c #49398D8042DD", 24 | "1 c #4BBD92E24467", 25 | "2 c #4ED09AB346AC", 26 | "3 c #4F6894E947F0", 27 | "4 c #521E956A4D61", 28 | "5 c #54629B6C4C98", 29 | "6 c #57199B205068", 30 | "7 c #5BB49EF754B3", 31 | "8 c #55C0A27C4C71", 32 | "9 c #584DA4354F11", 33 | "0 c #5CD2A48F543C", 34 | "q c #5D67AC98532D", 35 | "w c #6221A6025BB7", 36 | "e c #6511AAD45C98", 37 | "r c #6852AED25F23", 38 | "t c #61A7B18D56CB", 39 | "y c #644BB4EA5944", 40 | "u c #670CA7AD6029", 41 | "i c #6693AA2060CB", 42 | "p c #6AE9AD33642C", 43 | "a c #6F0CAEDA67F7", 44 | "s c #7018AF2968E4", 45 | "d c #6CC1B2FE63A5", 46 | "f c #6F9AB1C568F0", 47 | "g c #70ECBBAD6678", 48 | "h c #731AB3A06B80", 49 | "j c #748ABCE36A43", 50 | "k c #7BAABC8B74B2", 51 | "l c #7F00BD5977F8", 52 | "z c #7C16C17B747A", 53 | "x c #7F06C1AE78EE", 54 | "c c #82ADBF5B7B01", 55 | "v c #83DDC2ED7C52", 56 | "b c #887EC6F07EFC", 57 | "n c #87E4C2CE80B0", 58 | "m c #8B4AC59E8365", 59 | "M c #8E37C94C85A1", 60 | "N c #90C3CB708713", 61 | "B c #93B2CBDD8B29", 62 | "V c #98F5CED38FD2", 63 | "C c #97BBCEF4903D", 64 | "Z c #9A04CFBA91CA", 65 | "A c #9DA6D1C694B7", 66 | "S c #A0A4D370975D", 67 | "D c #A4A2D5859BEC", 68 | "F c None", 69 | /* pixels */ 70 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 71 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 72 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 73 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 74 | "FFFFFFFFFFFFFFFFFFFFFF998FFFFFFF", 75 | "FFFFFFFFFFFFFFFFFFFFFF0000FFFFFF", 76 | "FFFFFFFFFFFyyttqqq0980rppe5FFFFF", 77 | "FFFFFFFFjjjjjjggddddrdhkkhw5FFFF", 78 | "FFFFFFFgzvmMNBBBNNMMmmMMMca03FFF", 79 | "FFFFFFjzbNVASDDDDDSSAAAZCmhw3FFF", 80 | "FFFFFjvNASASDDDDDSAAAAZCVns71FFF", 81 | "FFFFgzNADDDAZBNmmmnvcvnnnku6:FFFFFFFFFFFFFFFFFFF", 91 | "FFFrkvMNNci541FFFFFFFFFFFFFFFFFF", 92 | "FFFehkmBBmlhw5:=&&%##@@OOoooFFFF", 93 | "FFF0ehvMNMnlhw531<<,,;;;-&OoFFFF", 94 | "FFFF5whcmmvvlkhhffappiiii4$XFFFF", 95 | "FFFFF5ehkcllvbvvvvvxxzzzzw&XFFFF", 96 | "FFFFFF47eahklvvvvxxxkkkkkw%.FFFF", 97 | "FFFFFFF160wupppppiiiewwww4@ FFFF", 98 | "FFFFFFFF<<<<<,;;;;-**&&&$@X FFFF", 99 | "FFFFFFFFFFF%#@@+OoooXXX.. FFFF", 100 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 101 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" 102 | }; 103 | -------------------------------------------------------------------------------- /icons/silk/arrow_inout.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *arrow_inout[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 64 1", 5 | " c #41B58B7B3E9C", 6 | ". c #44F28E7C413C", 7 | "X c #46A890D84287", 8 | "o c #4A19946545B5", 9 | "O c #4C9D98DF471E", 10 | "+ c #4D8395A74947", 11 | "@ c #4E8A9A994922", 12 | "# c #519E97C94D67", 13 | "$ c #52569D7C4CED", 14 | "% c #55139ACE50D6", 15 | "& c #582A9D39542F", 16 | "* c #552AA2B84E5E", 17 | "= c #5749A56D504B", 18 | "- c #59E6A52D537E", 19 | "; c #5CEBABAA551E", 20 | ": c #5E78A11A5A3F", 21 | "> c #5F4BA97A5860", 22 | ", c #5F3BB03C5736", 23 | "< c #60C2AFE157AA", 24 | "1 c #6133A3245D76", 25 | "2 c #6356ADD45BFE", 26 | "3 c #6463B3BF5B51", 27 | "4 c #6728B8E75D14", 28 | "5 c #6923BB335E9F", 29 | "6 c #6593A6E4612B", 30 | "7 c #66DDAF205FED", 31 | "8 c #6986AB4B6491", 32 | "9 c #6DA5AC1F6999", 33 | "0 c #71E3AF7A6CE6", 34 | "q c #67D1B26F6025", 35 | "w c #6C20B40C649B", 36 | "e c #6CB8BE78620D", 37 | "r c #6F88B2506957", 38 | "t c #7014C00F65F8", 39 | "y c #72B0B5616BEF", 40 | "u c #73E0BCA16AAA", 41 | "i c #7711B73D70D9", 42 | "p c #79BAB64473EA", 43 | "a c #7738B89B70E5", 44 | "s c #7B0FBAB67406", 45 | "d c #7E40B6D4796F", 46 | "f c #7F44BAEE79A6", 47 | "g c #6E9CC0B963D4", 48 | "h c #721FC5416640", 49 | "j c #75A5C4A66AC5", 50 | "k c #787EC6076DC4", 51 | "l c #795EC9146DC3", 52 | "z c #7D56C67273CE", 53 | "x c #7EF9C927744B", 54 | "c c #8225BDE97B55", 55 | "v c #81CFCA81773F", 56 | "b c #85C9C5717D1A", 57 | "n c #8653CC147C1D", 58 | "m c #88DCCB507F23", 59 | "M c #889BBF4382A9", 60 | "N c #87A5C1ED8101", 61 | "B c #8AA4C29B83D2", 62 | "V c #8CBACD21831D", 63 | "C c #9311C6E98C94", 64 | "Z c #947ECD678B88", 65 | "A c #940AD0FD8A4B", 66 | "S c #9D39D29793FD", 67 | "D c #A279D2459A47", 68 | "F c None", 69 | /* pixels */ 70 | "jhhhhhhhhhFFFFFFFFFFFF443333<;;;", 71 | "hjllllhhhhFFFFFFFFFFFF43333333;;", 72 | "hlvnmvjhFFggFFFFFFFF44FF33wuyw2;", 73 | "hlnVAVxjFFggFFFFFFFF33FF3wscsy2;", 74 | "hlnASSVvkgeeFFFFFFFF3333wsNBcy2-", 75 | "hjxVSSZVvkteFFFFFFFF33wyacBNsw>=", 76 | "hhjxVZZZZVj5FFFFFFFF3wfbcccsq>-=", 77 | "hhhjzmZSDZk5FFFFFFFF,wNCBcaw>=**", 78 | "hhFFhzZDDZu4FFFFFFFF;wNCCcr2FF**", 79 | "hhFFejmZZbu4FFFFFFFF;qscci2-FF**", 80 | "FFeeeejjuue4FFFFFFFF;<2q72-=**FF", 81 | "FFeeee554444FFFFFFFF;;;====***FF", 82 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 83 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 84 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 85 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 86 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 87 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 88 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 89 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 90 | "FF3333;;;;;;FFFFFFFF$$@@OOOOooFF", 91 | "FF3333qqq2;;FFFFFFFF$$---%@oooFF", 92 | "33FF3wacci2=FFFFFFFF@-8y06$oFFXX", 93 | "33FF3ycBBf2=FFFFFFFF@-0dp9&+FFXX", 94 | "33;3ryscMd2*FFFFFFFFO-9p08:%+XXX", 95 | "<<3waspppy>*FFFFFFFFO$69866:#oX.", 96 | ";2waccir2>=*FFFFFFFFO@%:1898:#X.", 97 | ";2yscfr2-***FFFFFFFFoo+#&1991%o ", 98 | ";2wyyr2;FF**FFFFFFFFooFF+#16:%X ", 99 | ";>2772-*FF$$FFFFFFFFooFF.o%&%+. ", 100 | ";;;>--=**$FFFFFFFFFFFFX...ooX.. ", 101 | "--==****$$FFFFFFFFFFFFXX... " 102 | }; 103 | -------------------------------------------------------------------------------- /icons/silk/shape_move_front.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *shape_move_front[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 65 1", 5 | " c #539D7FFFD255", 6 | ". c #5AD58551D4BB", 7 | "X c #629B8B99D726", 8 | "o c #68939001D63F", 9 | "O c #66288F65D890", 10 | "+ c #676D91F0D9CF", 11 | "@ c #6BB59474DA86", 12 | "# c #6F0F9897DC42", 13 | "$ c #75C897FBD626", 14 | "% c #7C439CAED83B", 15 | "& c #70B496A7DA6B", 16 | "* c #73AF9BBDDD5E", 17 | "= c #7BAF9E04DCCD", 18 | "- c #77DAA085DF68", 19 | "; c #7C45A194DF00", 20 | ": c #7D2CA59CE197", 21 | "> c #7F68A8F7E33F", 22 | ", c #838AA420DEF2", 23 | "< c #85A9AA35E05D", 24 | "1 c #900BAFC3DE5D", 25 | "2 c #B37DC01ED718", 26 | "3 c #85D4A6D9E0CE", 27 | "4 c #8542AAAEE355", 28 | "5 c #8BE1AC95E318", 29 | "6 c #9098AFDFE43E", 30 | "7 c #8CEAB36EE6DF", 31 | "8 c #9464B431E5C3", 32 | "9 c #9943B755E709", 33 | "0 c #9771B85CE82A", 34 | "q c #9AFAB9AFE767", 35 | "w c #9783B915E86C", 36 | "e c #9CB4BC5EE98B", 37 | "r c #A0EEBF36EAA1", 38 | "t c #B4A9C05DD18E", 39 | "y c #BC2CC85DD81E", 40 | "u c #BBABC829DDDC", 41 | "i c #A459C2B5EB55", 42 | "p c #BBD3D25BEFD1", 43 | "a c #C565C565C565", 44 | "s c #CCE5CCD0CCB1", 45 | "d c #C21CCC00DC5B", 46 | "f c #C909D303DF7D", 47 | "g c #D4E5D4D5D4C1", 48 | "h c #D88BD7B8D639", 49 | "j c #DA5CD93FD764", 50 | "k c #DBACDB9CDB85", 51 | "l c #E26BE166DFB1", 52 | "z c #C85AD285E41C", 53 | "x c #CE7BD900EC56", 54 | "c c #D4DCDEB2EE78", 55 | "v c #D402DE75F207", 56 | "b c #D968E31EEFA0", 57 | "n c #D73DE190F428", 58 | "m c #DD4CE5F1F3F5", 59 | "M c #DFA2E969F62A", 60 | "N c #E463E457E442", 61 | "B c #E882E7F5E6E0", 62 | "V c #EA13E956E7C8", 63 | "C c #EC97EC97EC97", 64 | "Z c #E472ECDFF7E5", 65 | "A c #F4AAF49DF48A", 66 | "S c #F8C4F88AF747", 67 | "D c #F573F7BAFAB5", 68 | "F c #FDC2FD7AFCF5", 69 | "G c None", 70 | /* pixels */ 71 | "VBBNNNNNNkkkkkjhggggGGGGGGGGGGGG", 72 | "BVCCCVVVBBNNNNNNNkggGGGGGGGGGGGG", 73 | "BCASSSSSSSAAAAAAACjgGGGGGGGGGGGG", 74 | "NCSFFFFFFFFFFFFFFAksGGGGGGGGGGGG", 75 | "NVSFFFFFFFFFFFFFFAjsGGGGGGGGGGGG", 76 | "NVSFFFFFFFFFFFFFFAjsGGGGGGGGGGGG", 77 | "NBSFFFFFFFFFFFFFFAjsGGGGGGGGGGGG", 78 | "kBSFFDZMMMMMMMMMMcdtGGGGGGGGGGGG", 79 | "kBAFFZpiiiiiiiiiie81<:::--GGGGGG", 80 | "kNAFFZi7788777775554444>;=GGGGGG", 81 | "kNAFFZi7weeeeeeww0008885;*GGGGGG", 82 | "kNCAAbi7eiiiiirreeeqq995;&GGGGGG", 83 | "jkkkkfq7eiiiireeeqq99885*#GGGGGG", 84 | "jhgggy87eiirreeeq9988884*@GGGGGG", 85 | "GGGGGG57eireeeqq90888883*+GGGGGG", 86 | "GGGGGG47weeeqq9988888653#OGGGGGG", 87 | "GGGGGG450eeq99088885555,@XGGGGGG", 88 | "GGGGGG>48eq998888655555;+oGGGGGG", 89 | "GGGGGG:4899988885555553=O$2jhggg", 90 | "GGGGGG:4898888855555333=X%dNNkgg", 91 | "GGGGGG-:78888655555333,=X=xSACjg", 92 | "GGGGGG*;354333,;;=====*@.;vFFAks", 93 | "GGGGGG******#@@+OOXXXXX. =vFFAjs", 94 | "GGGGGG&#@@+&=,<3,,,,,;===9mFFAjs", 95 | "GGGGGGGGGGGGuzcnnvvvvvvvvmAFFAhs", 96 | "GGGGGGGGGGGGlVSFFFFFFFFFFFSFFAhs", 97 | "GGGGGGGGGGGGkBSFFFFFFFFFFFSFFCga", 98 | "GGGGGGGGGGGGkNAFFFFFFFFFFFFFFCga", 99 | "GGGGGGGGGGGGkNAFFFFFFFFFFFFFFCga", 100 | "GGGGGGGGGGGGkNCAAAAAAAAACCCCCNsa", 101 | "GGGGGGGGGGGGjkkkkkkkkjjhhggggsaa", 102 | "GGGGGGGGGGGGjhggggssssssaaaaaaaa" 103 | }; 104 | -------------------------------------------------------------------------------- /icons/silk/star.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *star[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 66 1", 5 | " c #CDCF83B70D58", 6 | ". c #CF4A865D1039", 7 | "X c #CFCF88F910F4", 8 | "o c #D29B8D5A15E6", 9 | "O c #D2CB903B15ED", 10 | "+ c #D605945D1BD5", 11 | "@ c #D6D59A571C2B", 12 | "# c #D85F9B121E84", 13 | "$ c #D8BAA0371F9C", 14 | "% c #EA3FB6371D71", 15 | "& c #EADAB8AD1F0B", 16 | "* c #DA8E9D17241B", 17 | "= c #DC0AA5772539", 18 | "- c #DCE7A99326A6", 19 | "; c #DE69A5832AF7", 20 | ": c #DF10AC042ACD", 21 | "> c #E023B0BB2B9D", 22 | ", c #E0F5ADE82EC8", 23 | "< c #EA54B5D82381", 24 | "1 c #EC45BCBB22FF", 25 | "2 c #E10BB27A2D35", 26 | "3 c #EA3AB63F2BC3", 27 | "4 c #EC42BC122A68", 28 | "5 c #E1C3A789319D", 29 | "6 c #E34BAD143441", 30 | "7 c #E64DAFEE39EB", 31 | "8 c #E38BB33F33DB", 32 | "9 c #EA23B65E32A5", 33 | "0 c #E557BBFE35DD", 34 | "q c #EB3DB9FB3429", 35 | "w c #E6DAB5583AA4", 36 | "e c #E976B5F73D2D", 37 | "r c #E6C3BBD13A4C", 38 | "t c #EA76BB1D3DCC", 39 | "y c #EE1DC1F12613", 40 | "u c #EF22C5952A3D", 41 | "i c #F055C95B2CCA", 42 | "p c #F154CC3B2DCD", 43 | "a c #E661C0B535D1", 44 | "s c #EED5C5723328", 45 | "d c #F040CA8730D2", 46 | "f c #E7B9C1F73AF6", 47 | "g c #EADAC65B3BEB", 48 | "h c #EA69C9C13D4F", 49 | "j c #F149CC9733AB", 50 | "k c #F19CCE103B40", 51 | "l c #F347D12735B2", 52 | "z c #F33FD1AB3C01", 53 | "x c #EAC2BD73421D", 54 | "c c #EC02C4794367", 55 | "v c #EC47CC7D43C5", 56 | "b c #ED85C5A44990", 57 | "n c #EEADCCA24C13", 58 | "m c #F1AACDB3451E", 59 | "M c #F132CD334B51", 60 | "N c #ED74D0C64622", 61 | "B c #EF31D25E4C53", 62 | "V c #F416D4F5448B", 63 | "C c #F32BD38C4C6D", 64 | "Z c #F59DDA9A4EB7", 65 | "A c #F170CE45510E", 66 | "S c #F2D3D56F53C6", 67 | "D c #F2E0D97A554F", 68 | "F c #F3CBD79D5A09", 69 | "G c #F4F5DBEC5B31", 70 | "H c None", 71 | /* pixels */ 72 | "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH", 73 | "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH", 74 | "HHHHHHHHHHHHHHhhggHHHHHHHHHHHHHH", 75 | "HHHHHHHHHHHHHHhhhhHHHHHHHHHHHHHH", 76 | "HHHHHHHHHHHHHHvvvvgHHHHHHHHHHHHH", 77 | "HHHHHHHHHHHHHvnBBngHHHHHHHHHHHHH", 78 | "HHHHHHHHHHHHgvBSSng0HHHHHHHHHHHH", 79 | "HHHHHHHHHHHHhvSFFSc0HHHHHHHHHHHH", 80 | "HHHHHHHHHHHhvnSGFSvf0HHHHHHHHHHH", 81 | "HHHHHHHHHHhvnSDFSCncr0HHHHHHHHHH", 82 | "HHHHHgggfgvnSDSCmmMncr822>:HHHHH", 83 | "HHHNvvvvvvBSDSVkjkMnbxr08888,:HH", 84 | "hvNBDDDDDFFFSVkdisgcbbbxxtww8,-=", 85 | "hvNBDGGGGGDSVkjuuuusccccxxtw8:-=", 86 | "HHhvBDGGZVVzjjiuyy14444qxxe8:-HH", 87 | "HHHhvBFGZVlppiuuy111&%<9tx8,-=HH", 88 | "HHHHgvBSDZzppiuyy11&%0bnnbbxtw88weeee6#oHHHHHH", 98 | "HHHHHH:0bncr8,:::;=;;675+XHHHHHH", 99 | "HHHHHH:8xcr8-==HHH@#*;;*o HHHHHH", 100 | "HHHHHH::28::HHHHHHHHH++o. HHHHHH", 101 | "HHHHHH:---HHHHHHHHHHHH HHHHHH", 102 | "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH", 103 | "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH" 104 | }; 105 | -------------------------------------------------------------------------------- /src/gradientlistmodel.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************************** 2 | * Copyright (C) 2007-2024 by David Bitseff * 3 | * bitsed@gmail.com * 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | ***************************************************************************/ 18 | 19 | #include 20 | 21 | #include "gradientlistmodel.h" 22 | 23 | GradientListModel::GradientListModel(QObject *parent) 24 | : QAbstractListModel(parent) 25 | { 26 | } 27 | 28 | QVariant GradientListModel::data(const QModelIndex &index, int role) const 29 | { 30 | if (!index.isValid()) 31 | return QVariant(); 32 | 33 | if (role == Qt::DecorationRole) 34 | return QIcon(pixmaps.value(index.row())); 35 | else if (role == Qt::UserRole) 36 | return pixmaps.value(index.row()); 37 | 38 | return QVariant(); 39 | } 40 | 41 | void GradientListModel::addGradient(const QPixmap &pixmap) 42 | { 43 | int row = pixmaps.size(); 44 | beginInsertRows(QModelIndex(), row, row); 45 | pixmaps.insert(row, pixmap); 46 | endInsertRows(); 47 | } 48 | 49 | Qt::ItemFlags GradientListModel::flags(const QModelIndex &index) const 50 | { 51 | if (index.isValid()) { 52 | return (Qt::ItemIsEnabled | Qt::ItemIsSelectable); 53 | } 54 | 55 | return Qt::ItemIsDropEnabled; 56 | } 57 | 58 | bool GradientListModel::removeRows(int row, int count, const QModelIndex &parent) 59 | { 60 | if (parent.isValid()) 61 | return false; 62 | 63 | if (row >= pixmaps.size() || row + count <= 0) 64 | return false; 65 | 66 | int beginRow = qMax(0, row); 67 | int endRow = qMin(row + count - 1, pixmaps.size() - 1); 68 | 69 | beginRemoveRows(parent, beginRow, endRow); 70 | 71 | while (beginRow <= endRow) { 72 | pixmaps.removeAt(beginRow); 73 | ++beginRow; 74 | } 75 | 76 | endRemoveRows(); 77 | return true; 78 | } 79 | 80 | int GradientListModel::rowCount(const QModelIndex &parent) const 81 | { 82 | if (parent.isValid()) 83 | return 0; 84 | else 85 | return pixmaps.size(); 86 | } 87 | 88 | 89 | void GradientListModel::clear() 90 | { 91 | beginRemoveRows(QModelIndex(), 0, pixmaps.size()); 92 | pixmaps.clear(); 93 | endRemoveRows(); 94 | } 95 | -------------------------------------------------------------------------------- /icons/silk/bullet_toggle_minus.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *bullet_toggle_minus[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 69 1", 5 | " c #6FEE6FEE6FEE", 6 | ". c #709670967096", 7 | "X c #715D715D715D", 8 | "o c #731D731D731D", 9 | "O c #75D375D375D3", 10 | "+ c #764576457645", 11 | "@ c #777E777E777E", 12 | "# c #78C078C078C0", 13 | "$ c #7B6E7B6E7B6E", 14 | "% c #7EB97EB97EB9", 15 | "& c #7F7F7F7F7F7F", 16 | "* c #814A814A814A", 17 | "= c #825D825D825D", 18 | "- c #837883788378", 19 | "; c #842A842A842A", 20 | ": c #87A287A287A2", 21 | "> c #883B883B883B", 22 | ", c #8A608A608A60", 23 | "< c #8C6E8C6E8C6E", 24 | "1 c #8DED8DED8DED", 25 | "2 c #8E518E518E51", 26 | "3 c #90C490C490C4", 27 | "4 c #91A491A491A4", 28 | "5 c #928A928A928A", 29 | "6 c #935693569356", 30 | "7 c #94BF94BF94BF", 31 | "8 c #96D596D596D5", 32 | "9 c #979197919791", 33 | "0 c #9AA69AA69AA6", 34 | "q c #9B999B999B99", 35 | "w c #9EB49EB49EB4", 36 | "e c #9F7D9F7D9F7D", 37 | "r c #A0A3A0A3A0A3", 38 | "t c #A272A272A272", 39 | "y c #A4D2A4D2A4D2", 40 | "u c #A5BFA5BFA5BF", 41 | "i c #A7C4A7C4A7C4", 42 | "p c #A9ABA9ABA9AB", 43 | "a c #AA62AA62AA62", 44 | "s c #AC87AC87AC87", 45 | "d c #ADD0ADD0ADD0", 46 | "f c #AF8DAF8DAF8D", 47 | "g c #B0C9B0C9B0C9", 48 | "h c #B1A9B1A9B1A9", 49 | "j c #B293B293B293", 50 | "k c #B354B354B354", 51 | "l c #B49CB49CB49C", 52 | "z c #B5AEB5AEB5AE", 53 | "x c #B691B691B691", 54 | "c c #B75DB75DB75D", 55 | "v c #B8C4B8C4B8C4", 56 | "b c #B9C3B9C3B9C3", 57 | "n c #BA4EBA4EBA4E", 58 | "m c #BB92BB92BB92", 59 | "M c #BCABBCABBCAB", 60 | "N c #BDC9BDC9BDC9", 61 | "B c #BE9FBE9FBE9F", 62 | "V c #BFD9BFD9BFD9", 63 | "C c #C0FFC0FFC0FF", 64 | "Z c #C206C206C206", 65 | "A c #C2CEC2CEC2CE", 66 | "S c #C3A0C3A0C3A0", 67 | "D c #C4D4C4D4C4D4", 68 | "F c #CDA7CDA7CDA7", 69 | "G c #CE85CE85CE85", 70 | "H c #E3F9E3F9E3F9", 71 | "J c #EE62EE62EE62", 72 | "K c #EEC2EEC2EEC2", 73 | "L c None", 74 | /* pixels */ 75 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 76 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 77 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 78 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 79 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 80 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 81 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 82 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 83 | "LLLLLLLLLSCBmvzkgdaiuLLLLLLLLLLL", 84 | "LLLLLLLLAZCVNmbczkgsyrLLLLLLLLLL", 85 | "LLLLLLLLVVCZCCVVBBNlyqLLLLLLLLLL", 86 | "LLLLLLLLmNCCBMMMMBAvt8LLLLLLLLLL", 87 | "LLLLLLLLxnVBzggggxVcw4LLLLLLLLLL", 88 | "LLLLLLLLjxBAAZZZZASz0=@.LLLLLLLLLL", 96 | "LLLLLLLLL1,:;*%$#OoX LLLLLLLLLLL", 97 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 98 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 99 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 100 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 101 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 102 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 103 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 104 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 105 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 106 | "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL" 107 | }; 108 | -------------------------------------------------------------------------------- /icons/silk/application.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *application[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 70 1", 5 | " c #4D166E75A750", 6 | ". c #4E3A6F8EA87E", 7 | "X c #4F39709BA90C", 8 | "o c #5257753AAD2F", 9 | "O c #54B47827B00E", 10 | "+ c #5D287B56AF86", 11 | "@ c #56BA79A8B1DA", 12 | "# c #591D7D65B548", 13 | "$ c #5AEB807DB7F6", 14 | "% c #5D3182AABA5A", 15 | "& c #606E861DBD68", 16 | "* c #63E488C0BEE0", 17 | "= c #69E48A9CBCEA", 18 | "- c #71F28C6BB9CC", 19 | "; c #74CC947ABFFE", 20 | ": c #7C2D94FABEE4", 21 | "> c #63958A2AC18C", 22 | ", c #6A738D5EC079", 23 | "< c #6BD492A3C7DD", 24 | "1 c #6C5A9452CA85", 25 | "2 c #6EFC9895CEB0", 26 | "3 c #74C696CEC7A0", 27 | "4 c #7E1D9718C10D", 28 | "5 c #76809874C51F", 29 | "6 c #7F529970C298", 30 | "7 c #72189649C8C4", 31 | "8 c #73439959CD0D", 32 | "9 c #7B659CC9C976", 33 | "0 c #6FB09A22D13E", 34 | "q c #73D49DBCD406", 35 | "w c #78769F61D203", 36 | "e c #7E7CA1BECEEE", 37 | "r c #7726A0E2D6C7", 38 | "t c #7A65A2B4D655", 39 | "y c #761CA190D9C7", 40 | "u c #7B4BA58ADAD2", 41 | "i c #7E7AAA3ADF04", 42 | "p c #81F19C1BC5A2", 43 | "a c #830F9FA5CA65", 44 | "s c #862DA22FCBB9", 45 | "d c #896DA545CE73", 46 | "f c #8B96A81FD09A", 47 | "g c #85F1A933D696", 48 | "h c #8E4BAB58D43E", 49 | "j c #82C0AB86DE2C", 50 | "k c #8AA5AEF5DC4D", 51 | "l c #90C0AE15D76C", 52 | "z c #9151AF96D86E", 53 | "x c #9561B4E7DDCD", 54 | "c c #8BCBB402E4D8", 55 | "v c #9226B6DEE40F", 56 | "b c #9AF0BC34E4CD", 57 | "n c #B4BAC2C5DACD", 58 | "m c #BE7ACEA7E5E6", 59 | "M c #C076D1AEE8FE", 60 | "N c #D5D7DE39EBE7", 61 | "B c #C62AD8F9F079", 62 | "V c #D7FEE10AEE90", 63 | "C c #D8AEE1DBEF65", 64 | "Z c #DC48E648F3B6", 65 | "A c #DFB9EA57F751", 66 | "S c #E3D7EBA7F63B", 67 | "D c #EA00EF57F6F8", 68 | "F c #E2C3ECD8F8BF", 69 | "G c #EC7EF1B2F7DE", 70 | "H c #EE87F394F97C", 71 | "J c #F2B3F6C7FB39", 72 | "K c #F68AFA3AFC2C", 73 | "L c #FD30FEB2FECF", 74 | "P c None", 75 | /* pixels */ 76 | "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP", 77 | "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP", 78 | "PPgkiuuuuutrrqqqqq882211115;PPPP", 79 | "*8kcjjjjjjiiuuuuuttttrwwwwe9=PPP", 80 | "tjcvcccccccccccccccccccccccg3=PP", 81 | "jjcccccccccccccccccccccccccj8,PP", 82 | "iiiiiiiiiiiiiiiiiiiiiiiiiiit<,PP", 83 | "ujvbbbbbbbbbbbbbbbbbbbbbbbbk7*PP", 84 | "yvBFFAAAAAAAAAAAAAAAAAAAFFFMa&PP", 85 | "ybALLLLLLLLLLLLLLLLLLLLLLLLCs%PP", 86 | "ybALLLLLLLKKKKKKJJJJHHGDDJLCs%PP", 87 | "ybALLKKKKKKJJJJJHHGDDDSSSDLVs$PP", 88 | "qbALLLLKKKKKKJJJJHHGGGDDSHLVs#PP", 89 | "qbALLLLLLKKKKKKJJJJHHHGGDJLNa#PP", 90 | "qxZLLLLLLLKKKKKKKJJJJJHHGJLNp@PP", 91 | "qxZLLLLLLLLLKKKKKKKJJJJHHKLNp@PP", 92 | "qxZLLLLLLLLLLKKKKKKKKJJJJKLNp@PP", 93 | "qxZLLLLLLLLLLLLKKKKKKKKJJKLNpOPP", 94 | "0xZLLLLLLLLLLLLLKKKKKKKKKKLNpOPP", 95 | "2xZLLLLLLLLLLLLLLLLKKKKKKLLN6oPP", 96 | "1xZLLLLLLLLLLLLLLLLLLLKKKLLN4oPP", 97 | "1zZLLLLLLLLLLLLLLLLLLLLKKLLN:XPP", 98 | "smZZCCCVVVNNNNNNNNNNNNNNNNn- PP", 102 | "@=affdddsssappppp66644:::::-+XPP", 103 | "P@&>*&&%%$$##@@OOoooooXX. XPPP", 104 | "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP", 105 | "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP", 106 | "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP", 107 | "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP" 108 | }; 109 | -------------------------------------------------------------------------------- /icons/silk/arrow_out.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *arrow_out[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 71 1", 5 | " c #418F8B803E60", 6 | ". c #45028EDA4122", 7 | "X c #46C490DC42BE", 8 | "o c #49AA9298458B", 9 | "O c #4D6A99034761", 10 | "+ c #4DD094EF4A1E", 11 | "@ c #4E6599C94938", 12 | "# c #504897654B95", 13 | "$ c #52B79DA34D34", 14 | "% c #55BE9D9950F4", 15 | "& c #59E39E325561", 16 | "* c #5DC19F535997", 17 | "= c #5571A3444EA1", 18 | "- c #57A9A5C450A4", 19 | "; c #5ACEA5DE5451", 20 | ": c #5CB0AB9C54CD", 21 | "> c #5E6EA2C859F6", 22 | ", c #5F10A9D55832", 23 | "< c #609FAFD3578A", 24 | "1 c #6281A5095DCA", 25 | "2 c #621FACB65AE3", 26 | "3 c #606EB1145771", 27 | "4 c #64B0B30F5C07", 28 | "5 c #6804B4265F45", 29 | "6 c #67E2B9D85DCF", 30 | "7 c #6940BAE85EE9", 31 | "8 c #6683A6D96203", 32 | "9 c #681AA6D463B5", 33 | "0 c #6708A90D6247", 34 | "q c #695FABF163CC", 35 | "w c #6ED9ACD26AE0", 36 | "e c #7171AE6C6D12", 37 | "r c #6BD0B3866450", 38 | "t c #6D9FBDD063AC", 39 | "y c #7158BE696762", 40 | "u c #7385B5CB6CAF", 41 | "i c #7448B9B06C3C", 42 | "p c #74E4B01E7018", 43 | "a c #7671B80F7017", 44 | "s c #79E7B76D733E", 45 | "d c #77D0B8D7700F", 46 | "f c #7B9DBAC2747C", 47 | "g c #7F31BE317801", 48 | "h c #71C2C52D65D9", 49 | "j c #7423C4FD6901", 50 | "k c #79ABC6F16EF6", 51 | "l c #7774C8C36BA2", 52 | "z c #7D23C48E7399", 53 | "x c #7D15C9BE71F5", 54 | "c c #8269BD6D7BA8", 55 | "v c #8114C58C77D6", 56 | "b c #80F7CA90762F", 57 | "n c #863DC26D7E65", 58 | "m c #84C2CAE77B63", 59 | "M c #88A4CA7F7F36", 60 | "N c #89D4BFE78321", 61 | "B c #87BEC1EC80AE", 62 | "V c #8A9BC3468369", 63 | "C c #8C7DCBE58354", 64 | "Z c #9056CF2A85F1", 65 | "A c #935AC78F8CCA", 66 | "S c #954ACDFF8CAA", 67 | "D c #924ED1658885", 68 | "F c #9823D0BD8EF0", 69 | "G c #9774CA4B90A0", 70 | "H c #9991CFCF9088", 71 | "J c #9B86D3009276", 72 | "K c #A5AAD6349D4D", 73 | "L c #A931D76FA099", 74 | "P c #AB8ED8F6A386", 75 | "I c None", 76 | /* pixels */ 77 | "jjhhhhhhhhIIIIIIIIIIII644433::::", 78 | "jlxbbxjhhhIIIIIIIIIIII6445rrrr<:", 79 | "hxDJJZkhIIIIIIIIIIIIIIII4rgVVg5:", 80 | "hbJPLJbjIIIIIIIIIIIIIIIIriBAGBr;", 81 | "hbJKKFMzjIIIIIIIIIIIII35ifnVAcr-", 82 | "hxCJJSZCzjIIIIIIIIIIII5rgncccd2-", 83 | "hjxmCSJSMzyIIIIIIIII35igVVgur2;-", 84 | "hhjkbCHHCzy7IIIIIIII35icVnar,===", 85 | "hhIIjzCCMzy6IIIIIIII:5iffur,II==", 86 | "hhIItjzvzzyIIIIIIIIII4rurr2III==", 87 | "IIIIIIyyytIIIIIIIIIIII2222IIIIII", 88 | "IIIIII776IIIIIIIIIIIIII--IIIIIII", 89 | "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII", 90 | "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII", 91 | "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII", 92 | "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII", 93 | "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII", 94 | "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII", 95 | "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII", 96 | "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII", 97 | "IIIIIII::IIIIIIIIIIIIII@OOIIIIII", 98 | "IIIIII4422IIIIIIIIIIII%%$$IIIIII", 99 | "44III4rrrr2IIIIIIIIII%>11>#oIIXX", 100 | "43II4ridur2-IIIIIIII@%>0q8%@IIXX", 101 | "33:2riccsr,=IIIIIIIIO$>0ee1&#oX.", 102 | "<35rusccuq,=IIIIIIIII$;1we91&#o.", 103 | ":5dgsssu2,IIIIIIIIIIII@%18188>+ ", 104 | ":rcNcsuq;=IIIIIIIIIIIII+%*1qe8+ ", 105 | ":rcVcsq,IIIIIIIIIIIIIIIIo%8ep9+ ", 106 | ":2ufsu2-IIIIIIIIIIIIIIII.+>99*o ", 107 | ";:222,-==$IIIIIIIIIIIIX..X+++o. ", 108 | ";;-=====$$IIIIIIIIIIIIXX.. " 109 | }; 110 | -------------------------------------------------------------------------------- /icons/silk/arrow_rotate_clockwise.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *arrow_rotate_clockwise[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 32 73 1", 5 | " c #31B575072C5D", 6 | ". c #34C178D52ECA", 7 | "X c #36AB7A6030A1", 8 | "o c #38FA7C38336B", 9 | "O c #3C41820435C2", 10 | "+ c #3F87862B38C8", 11 | "@ c #41EB85453C55", 12 | "# c #44018B113CE3", 13 | "$ c #4560878D3FE6", 14 | "% c #462788EE40A5", 15 | "& c #49AC8C6843BC", 16 | "* c #4CD1936545A9", 17 | "= c #4EB499A34677", 18 | "- c #4FC393604995", 19 | "; c #528C96964C27", 20 | ": c #53E29C074BEA", 21 | "> c #55E397D94FF2", 22 | ", c #569E98D750FB", 23 | "< c #5A779E7F538E", 24 | "1 c #56DAA14F4E3B", 25 | "2 c #588AA4C44F74", 26 | "3 c #5C36A3BD53D4", 27 | "4 c #5E26AB5654B3", 28 | "5 c #5FD0A2B05A5F", 29 | "6 c #60C1AFF255C3", 30 | "7 c #6293A6385B35", 31 | "8 c #6574AA8D5D15", 32 | "9 c #6175B12E56DA", 33 | "0 c #6599B5185B36", 34 | "q c #68CBB3305F43", 35 | "w c #691FBA8A5DB6", 36 | "e c #667CA8246066", 37 | "r c #6B0DAD086406", 38 | "t c #6E6AAF826878", 39 | "y c #6DC3B2B4650F", 40 | "u c #6EE9B9926501", 41 | "i c #7041B83165FA", 42 | "p c #717DB92F67AF", 43 | "a c #736BB39C6C60", 44 | "s c #74FBBC026AB5", 45 | "d c #7915BAE26F60", 46 | "f c #76F7B56A7001", 47 | "g c #7869B72A7163", 48 | "h c #7B93BBAA742C", 49 | "j c #7EDFBE6878A0", 50 | "k c #730BC17567BC", 51 | "l c #7566C2076A61", 52 | "z c #7939C20D6E11", 53 | "x c #7D2FC51C7251", 54 | "c c #7FDCC0F978D6", 55 | "v c #8046BF717717", 56 | "b c #815CBF3079FF", 57 | "n c #8038C641759B", 58 | "m c #84BBC3577D45", 59 | "M c #894AC4C37F75", 60 | "N c #86EEC8657CF2", 61 | "B c #8913C9B87E5D", 62 | "V c #8772C54180BE", 63 | "C c #8ACBC655832E", 64 | "Z c #8D0DC99D857B", 65 | "A c #8F9BCA9B8884", 66 | "S c #90E2CAD186AF", 67 | "D c #94BBCC7D8BCE", 68 | "F c #9846CF508E91", 69 | "G c #99A9D09E8F57", 70 | "H c #9AEECF7E923D", 71 | "J c #9D68D1C09414", 72 | "K c #A088D27A97A9", 73 | "L c #A542D59F9BEA", 74 | "P c #A8DED7579F6D", 75 | "I c #AA4BD823A10E", 76 | "U c #AB85D8F9A1C4", 77 | "Y c None", 78 | /* pixels */ 79 | "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY", 80 | "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY", 81 | "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY", 82 | "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY", 83 | "YYYYYYYYYYYYwww00096YYYYYYYYYYYY", 84 | "YYYYYYYYYYYzzzzzsspiyYYYYYYYYYYY", 85 | "YYYYYYYYYkxBSFGGFDSMhy4YYYYYYYYY", 86 | "YYYYYYYYlxBDJLPUILJDVhr3YYYYYYYY", 87 | "YYYYYYYknZJLLLPPPLJHFChr3YYYYYYY", 88 | "YYYYYYkxZJLILKJHHHHJJHVd7:YYYYYY", 89 | "YYYYYYxBJLPPLHSMMCDHJHDmt5YYYYYY", 90 | "YYYYYzNDLIPKDCvddhbCDHHZge:YYYYY", 91 | "YYYYwzAJLPLDgyq8877yVDDCba;@YYYY", 92 | "YYYYwsNSDDZvq2YYYY=3hCZZCf;+YYYY", 93 | "YYYY0wuppuyq4YYYYYY3yhCAZg;OYYYY", 94 | "YYYY009944432YYYYYY<8amAAg-OYYYY", 95 | "YYYYYYYYYYYY11YYYYY:8amZZa*oYYYY", 96 | "YYYYYYYYYYYY::YYYY#:edmVVa&XYYYY", 97 | "YYYYYYYYYY::::YYY##;avmmjr&.YYYY", 98 | "YYYYYYYYYY33::YY*;;7gmmha7% YYYY", 99 | "YYYYYYYY:17873**:7ahmmmhe>@YYYYY", 100 | "YYYYYYYY15yaar3<8abVMmjt,&YYYYYY", 101 | "YYYYYY:17yjMmbhhhjcmmjt<$oYYYYYY", 102 | "YYYYYY::7aMAZZZCCmjhgt<&oYYYYYYY", 103 | "YYYYYY=:7amZZCCVVmha8,#oYYYYYYYY", 104 | "YYYYYY=:<8gbjhaaate7;%oYYYYYYYYY", 105 | "YYYYYYYY*:7re5;&&&%@@YYYYYYYYYYY", 106 | "YYYYYYYY#*;;;*@X.. YYYYYYYYYYYY", 107 | "YYYYYYYYYY##@@YYYYYYYYYYYYYYYYYY", 108 | "YYYYYYYYYYOOooYYYYYYYYYYYYYYYYYY", 109 | "YYYYYYYYYYYYXXYYYYYYYYYYYYYYYYYY", 110 | "YYYYYYYYYYYYXXYYYYYYYYYYYYYYYYYY" 111 | }; 112 | --------------------------------------------------------------------------------