mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
syncing uppdev
git-svn-id: svn://ultimatepp.org/upp/trunk@1976 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
7605c4969b
commit
ec6ed6959b
7 changed files with 311 additions and 36 deletions
12
uppdev/CoWork/CoWork.upp
Normal file
12
uppdev/CoWork/CoWork.upp
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
description "Using CoWork for loop parallelisation\377";
|
||||
|
||||
uses
|
||||
CtrlLib;
|
||||
|
||||
file
|
||||
Img.iml,
|
||||
main.cpp;
|
||||
|
||||
mainconfig
|
||||
"" = "GUI MT";
|
||||
|
||||
30
uppdev/CoWork/Img.iml
Normal file
30
uppdev/CoWork/Img.iml
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
PREMULTIPLIED
|
||||
IMAGE_ID(dfmaudio)
|
||||
|
||||
IMAGE_BEGIN_DATA
|
||||
IMAGE_DATA(120,156,237,220,109,110,212,48,20,134,209,110,133,197,32,22,197,34,250,139,245,130,16,26,49,74,51,19,251,38,142,63)
|
||||
IMAGE_DATA(238,121,165,231,127,11,167,142,51,130,126,124,126,124,126,164,218,183,31,63,187,103,115,236,232,239,241,251,175,223,77,99)
|
||||
IMAGE_DATA(105,190,245,178,194,209,124,27,209,202,89,75,214,118,51,154,169,117,100,215,110,118,43,17,71,22,223,10,231,203,89,67)
|
||||
IMAGE_DATA(86,183,108,102,142,28,217,241,178,123,97,167,126,204,188,247,99,95,183,210,179,201,218,239,241,115,180,130,23,118,238,219)
|
||||
IMAGE_DATA(74,231,12,59,247,109,69,47,189,203,240,78,207,205,125,118,86,243,195,205,253,142,102,223,170,119,155,81,91,197,15,55)
|
||||
IMAGE_DATA(253,253,204,54,102,250,55,163,157,204,110,44,190,172,102,216,57,183,236,110,216,137,141,155,57,26,241,29,140,155,57,26)
|
||||
IMAGE_DATA(237,51,68,103,206,124,141,96,135,155,121,235,233,39,243,187,248,10,245,178,195,204,26,245,180,211,251,123,31,45,123,61)
|
||||
IMAGE_DATA(207,41,118,34,227,134,157,232,152,89,187,86,119,31,231,205,250,181,122,239,226,102,253,90,125,222,204,78,142,174,182,227)
|
||||
IMAGE_DATA(121,149,171,171,236,112,147,175,171,237,244,254,126,196,206,234,217,191,121,94,177,19,25,55,236,68,199,141,30,213,188,183)
|
||||
IMAGE_DATA(59,115,244,92,205,103,134,220,104,91,137,29,103,142,246,170,177,211,251,107,213,120,177,163,104,236,180,45,235,220,117,216)
|
||||
IMAGE_DATA(137,140,27,118,162,227,70,71,189,186,239,176,163,163,246,236,120,94,169,164,189,207,120,184,81,105,236,40,218,246,236,97)
|
||||
IMAGE_DATA(71,53,177,211,166,108,99,135,157,232,184,97,39,58,118,84,211,246,190,211,251,235,209,60,249,125,40,58,19,59,138,198)
|
||||
IMAGE_DATA(142,162,177,163,104,236,40,26,59,215,151,109,236,176,19,29,59,236,68,199,142,106,115,223,81,52,118,20,141,29,69,99)
|
||||
IMAGE_DATA(71,209,216,209,153,188,103,93,255,231,153,105,236,176,19,29,59,236,68,199,142,106,115,87,86,52,118,20,205,191,89,86)
|
||||
IMAGE_DATA(164,173,27,118,84,154,255,83,172,104,236,180,41,219,216,97,39,58,118,216,137,142,29,213,180,119,223,225,71,37,177,163)
|
||||
IMAGE_DATA(104,126,231,160,34,189,251,93,167,252,232,85,123,110,216,81,73,123,110,60,183,84,18,59,109,203,58,207,45,118,162,99)
|
||||
IMAGE_DATA(135,157,51,99,71,123,189,187,235,108,237,240,163,231,106,237,240,163,191,189,250,92,199,217,163,163,74,221,184,247,104,207)
|
||||
IMAGE_DATA(13,59,138,218,169,217,179,29,134,202,51,119,102,118,226,99,135,157,51,227,39,103,145,59,206,145,159,222,223,147,238,115)
|
||||
IMAGE_DATA(115,133,29,126,114,117,165,155,173,29,126,214,237,234,51,135,159,28,181,114,195,207,250,181,116,195,79,89,246,126,236,176)
|
||||
IMAGE_DATA(115,102,252,176,19,29,59,243,119,199,29,135,159,245,106,253,94,85,99,135,159,121,234,237,134,159,57,27,197,205,99,91)
|
||||
IMAGE_DATA(63,12,141,217,104,110,30,227,103,236,70,117,243,60,126,198,109,134,101,246,99,231,151,213,143,93,179,140,126,70,217,232)
|
||||
IMAGE_DATA(119,155,146,101,244,211,187,25,238,197,165,227,135,155,51,243,14,127,159,153,149,220,60,182,231,135,161,107,221,172,62,126)
|
||||
IMAGE_DATA(174,55,147,193,205,243,248,185,198,78,214,173,118,6,217,189,91,201,143,245,217,10,126,172,223,188,139,253,47,251,125,38)
|
||||
IMAGE_DATA(178,87,126,178,88,202,252,254,116,229,178,249,97,166,221,86,117,228,172,185,103,51,159,69,71,207,98,187,111,51,220,141)
|
||||
IMAGE_DATA(74,190,70,235,183,145,12,49,50,255,74,60,221,145,205,59,86,154,237,15,218,43,36,33,0,0,0,0,0,0,0,0)
|
||||
IMAGE_END_DATA(800, 1)
|
||||
4
uppdev/CoWork/init
Normal file
4
uppdev/CoWork/init
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
#ifndef _CoWork_icpp_init_stub
|
||||
#define _CoWork_icpp_init_stub
|
||||
#include "CtrlLib/init"
|
||||
#endif
|
||||
244
uppdev/CoWork/main.cpp
Normal file
244
uppdev/CoWork/main.cpp
Normal file
|
|
@ -0,0 +1,244 @@
|
|||
#include <CtrlLib/CtrlLib.h>
|
||||
|
||||
#define IMAGECLASS MyImg
|
||||
#define IMAGEFILE <CoWork/Img.iml>
|
||||
#include <Draw/iml.h>
|
||||
|
||||
using namespace Upp;
|
||||
|
||||
class App : public TopWindow {
|
||||
public:
|
||||
typedef App CLASSNAME;
|
||||
virtual void LeftDown(Point, dword);
|
||||
virtual void Paint(Draw& w);
|
||||
|
||||
private:
|
||||
String text;
|
||||
bool cowork;
|
||||
int phase;
|
||||
|
||||
/* extra stuff */
|
||||
CoWork co;
|
||||
bool dorun;
|
||||
|
||||
TreeCtrl tGroups2;
|
||||
void TestDropInsert( int parent, int ii, PasteClip& d );
|
||||
void TestDrag();
|
||||
void TestTree();
|
||||
void DoRefresh();
|
||||
void Start();
|
||||
/* ...... */
|
||||
|
||||
void SyncTitle();
|
||||
|
||||
public:
|
||||
typedef App CLASSNAME;
|
||||
|
||||
App& Text(const String& t) { text = t; Refresh(); return *this; }
|
||||
|
||||
App();
|
||||
|
||||
//extra stuff
|
||||
~App() { dorun = false; }
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/* extra stuff */
|
||||
|
||||
void App::Start()
|
||||
{
|
||||
for(int i = 0; i < 10; i++)
|
||||
{
|
||||
co & THISBACK(DoRefresh);
|
||||
}
|
||||
}
|
||||
|
||||
void App::TestTree() {
|
||||
|
||||
TreeCtrl & tree = tGroups2;
|
||||
|
||||
Vector<int> parent, parent2;
|
||||
parent.Add(0);
|
||||
tree.SetRoot(Image(), "The Tree");
|
||||
for(int i = 1; i < 100; i++) {
|
||||
parent.Add(tree.Add(parent[rand() % parent.GetCount()], Image(),
|
||||
FormatIntRoman(i, true)));
|
||||
if((rand() & 3) == 0)
|
||||
tree.Open(parent.Top());
|
||||
}
|
||||
|
||||
tree.Open(0);
|
||||
tree.WhenDropInsert = THISBACK(TestDropInsert);
|
||||
tree.WhenDrag = THISBACK(TestDrag);
|
||||
tree.MultiSelect();
|
||||
}
|
||||
|
||||
void App::TestDropInsert(int parent, int ii, PasteClip& d)
|
||||
{
|
||||
/*
|
||||
if(AcceptInternal<TreeCtrl>(d, "mytreedrag")) {
|
||||
tGroups2.InsertDrop(parent, ii, d);
|
||||
tGroups2.SetFocus();
|
||||
return;
|
||||
}
|
||||
if(AcceptText(d)) {
|
||||
tGroups2.SetCursor(tGroups2.Insert(parent, ii, Image(), GetString(d)));
|
||||
tGroups2.SetFocus();
|
||||
return;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void App::TestDrag()
|
||||
{
|
||||
if(tGroups2.DoDragAndDrop(InternalClip(tGroups2, "mytreedrag"),
|
||||
tGroups2.GetDragSample()) == DND_MOVE)
|
||||
{
|
||||
tGroups2.RemoveSelection();
|
||||
}
|
||||
int a = 0;
|
||||
}
|
||||
|
||||
void App::DoRefresh()
|
||||
{
|
||||
while(dorun)
|
||||
{
|
||||
Refresh();
|
||||
Sleep(1);
|
||||
}
|
||||
}
|
||||
|
||||
/* ..... */
|
||||
|
||||
|
||||
App::App()
|
||||
{
|
||||
SetRect(0,0,472,320);
|
||||
BackPaint();
|
||||
Zoomable().Sizeable();
|
||||
cowork = true;
|
||||
phase = 0;
|
||||
SyncTitle();
|
||||
|
||||
/* extra stuff */
|
||||
Add(tGroups2.LeftPos(0,100).VSizePos());
|
||||
TestTree();
|
||||
PostCallback(THISBACK(Start));
|
||||
/* ... */
|
||||
}
|
||||
|
||||
void App::SyncTitle()
|
||||
{
|
||||
Title(cowork ? "Now using all CPU cores (click the image for single core)"
|
||||
: "Now using single CPU core (click the image to use all cores)");
|
||||
}
|
||||
|
||||
void App::LeftDown(Point, dword)
|
||||
{
|
||||
cowork = !cowork;
|
||||
SyncTitle();
|
||||
}
|
||||
|
||||
void DoLine(RGBA *line, int phase, int y, Size sz)
|
||||
{
|
||||
Point c = sz / 2; //center is rotation point
|
||||
c = Point( int(sin((double)phase / 131) * c.x/2 + c.x),
|
||||
int(cos((double)phase / 127) * c.y/2 + c.y)
|
||||
);
|
||||
|
||||
int yy = (y - c.y) * (y - c.y);
|
||||
|
||||
for(int x = 0; x < sz.cx; x++) { //for the x points
|
||||
double d = (x - c.x) * (x - c.x) + yy;
|
||||
line[x] =
|
||||
//GrayColor((int)(120 + 120 * sin(d / 1000 - (double)phase / 5)));
|
||||
Blend(Black, LtBlue, (int)(120 + 120 * sin(d / 3000 - (double)phase / 5)));
|
||||
}
|
||||
}
|
||||
|
||||
struct EXT
|
||||
{
|
||||
RGBA *line;
|
||||
int y;
|
||||
int phase;
|
||||
Size sz;
|
||||
Point c;
|
||||
Color col;
|
||||
};
|
||||
|
||||
void DoLine2(EXT e)
|
||||
{
|
||||
int yy = (e.y - e.c.y) * (e.y - e.c.y);
|
||||
for(int x = 0; x < e.sz.cx; x++) { //for the x points
|
||||
double d = (x - e.c.x) * (x - e.c.x) + yy;
|
||||
e.line[x] =
|
||||
//GrayColor((int)(120 + 120 * sin(d / 1000 - (double)phase / 5)));
|
||||
Blend(Black, e.col, (int)(120 + 120 * sin(d / 2000 - (double)e.phase / 5)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void App::Paint(Draw& w)
|
||||
{
|
||||
Size sz = GetSize();
|
||||
ImageBuffer ib(sz);
|
||||
|
||||
/*
|
||||
if(cowork) {
|
||||
CoWork co;
|
||||
for(int y = 0; y < sz.cy; y++)
|
||||
co & callback4(DoLine, ib[y], phase, y, sz); //calculate each line separately
|
||||
}
|
||||
else
|
||||
for(int y = 0; y < sz.cy; y++)
|
||||
DoLine(ib[y], phase, y, sz); //calculate each line separately
|
||||
*/
|
||||
|
||||
/*
|
||||
EXT e;
|
||||
e.phase = phase;
|
||||
e.sz = sz;
|
||||
Point c = e.sz / 2; //center is rotation point
|
||||
//e.col = Color(0, 69, 149);
|
||||
e.col = HsvColorf((float)(phase%360)/360.0f, 1, 1);
|
||||
if(1)
|
||||
{
|
||||
e.c = Point( int(sin((double)e.phase / 131) * c.x/2 + c.x),
|
||||
int(cos((double)e.phase / 127) * c.y/2 + c.y)
|
||||
);
|
||||
}
|
||||
else
|
||||
e.c = c;
|
||||
|
||||
if(cowork) {
|
||||
CoWork co;
|
||||
for(int y = 0; y < sz.cy; y++)
|
||||
{
|
||||
e.line = ib[y]; e.y = y;
|
||||
co & callback1(DoLine2, e); //calculate each line separately
|
||||
}
|
||||
}
|
||||
else
|
||||
for(int y = 0; y < sz.cy; y++)
|
||||
{
|
||||
e.line = ib[y]; e.y = y;
|
||||
DoLine2(e); //calculate each line separately
|
||||
}
|
||||
*/
|
||||
w.DrawImage(0, 0, ib);
|
||||
|
||||
const Image & im = MyImg::dfmaudio();
|
||||
Size isz = im.GetSize();
|
||||
Point pp = isz/2;
|
||||
// w.DrawImage(e.c.x-pp.x, e.c.y-pp.y, im);
|
||||
w.DrawImage(0+(phase%200), 0, im);
|
||||
//Refresh(); // is done in the cowork
|
||||
phase++;
|
||||
}
|
||||
|
||||
GUI_APP_MAIN
|
||||
{
|
||||
App().Run();
|
||||
}
|
||||
|
|
@ -1,11 +1,13 @@
|
|||
description "Report example";
|
||||
|
||||
uses
|
||||
CtrlLib,
|
||||
Report;
|
||||
|
||||
file
|
||||
main.cpp;
|
||||
|
||||
mainconfig
|
||||
"" = "GUI";
|
||||
description "Report example\377";
|
||||
|
||||
uses
|
||||
CtrlLib,
|
||||
Report,
|
||||
PdfDraw;
|
||||
|
||||
file
|
||||
main.cpp;
|
||||
|
||||
mainconfig
|
||||
"" = "GUI";
|
||||
|
||||
|
|
|
|||
6
uppdev/Reports/init
Normal file
6
uppdev/Reports/init
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef _Reports_icpp_init_stub
|
||||
#define _Reports_icpp_init_stub
|
||||
#include "CtrlLib/init"
|
||||
#include "Report/init"
|
||||
#include "PdfDraw/init"
|
||||
#endif
|
||||
|
|
@ -2,33 +2,10 @@
|
|||
|
||||
using namespace Upp;
|
||||
|
||||
struct TableRowTracer : RichTextLayoutTracer {
|
||||
VectorMap<int, int> pgr;
|
||||
|
||||
virtual void TableRow(const Rect& page, PageY y, int, const RichTable&) {
|
||||
pgr.GetAdd(y.page, 0)++;
|
||||
}
|
||||
};
|
||||
|
||||
GUI_APP_MAIN
|
||||
{
|
||||
Report r;
|
||||
r.Footer("[R1 ");
|
||||
TableRowTracer t;
|
||||
r.SetRichTextLayoutTracer(t);
|
||||
String qtf = "&[R This is a demonstration of [* RichTextLayoutTracer]&&&{{1 Table";
|
||||
for(int i = 0; i < 100; i++)
|
||||
qtf << ":: " << i;
|
||||
qtf << "}}";
|
||||
r.Put(qtf);
|
||||
r << "@@iml:400*400`CtrlImg:exclamation`";
|
||||
|
||||
Report rr;
|
||||
for(int i = 0; i < r.GetCount(); i++) {
|
||||
if(i)
|
||||
rr.NewPage();
|
||||
rr.Footer("[R1 There is " + AsString(t.pgr.Get(i, 0)) + " table rows on this page");
|
||||
rr.DrawDrawing(r.GetPageSize(), r[i]);
|
||||
}
|
||||
|
||||
Perform(rr);
|
||||
Perform(r);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue