Add Tree and Update for gtk119
This commit is contained in:
parent
0b48e73017
commit
ce64902cc8
|
@ -30,4 +30,7 @@ bool MyImage::on_draw(const Cairo::RefPtr<Cairo::Context> &cr){
|
||||||
void MyImage::set_pixbuf(const Glib::RefPtr<Gdk::Pixbuf> &pixbuf)
|
void MyImage::set_pixbuf(const Glib::RefPtr<Gdk::Pixbuf> &pixbuf)
|
||||||
{
|
{
|
||||||
image = pixbuf;
|
image = pixbuf;
|
||||||
|
|
||||||
|
//ReDraw the draw area
|
||||||
|
queue_draw();
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,9 +30,23 @@ btnopen("Open Image")
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyWin::btnopen_clicked(){
|
void MyWin::btnopen_clicked(){
|
||||||
|
//Create a file open dialog
|
||||||
|
dialog = Gtk::FileChooserNative::create("Open a image File",*this,Gtk::FILE_CHOOSER_ACTION_OPEN,
|
||||||
|
"OK","Cancel");
|
||||||
|
|
||||||
|
dialog->signal_response().connect(sigc::mem_fun(*this,&MyWin::dialog_response));
|
||||||
|
|
||||||
|
dialog->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyWin::dialog_response(int response_id){
|
void MyWin::dialog_response(int response_id){
|
||||||
|
if(response_id == Gtk::RESPONSE_ACCEPT){
|
||||||
|
//Show the image in a drawing area
|
||||||
|
auto filename = dialog->get_filename();
|
||||||
|
auto pixbuf = Gdk::Pixbuf::create_from_file(filename);
|
||||||
|
image_area.set_pixbuf(pixbuf);
|
||||||
|
pixbuf.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog.reset();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
void SetColor(int Mode){
|
||||||
|
//Get Color
|
||||||
|
int color = rand()%16;
|
||||||
|
if(color == 0 ) color = 0x04;
|
||||||
|
|
||||||
|
//Set Color for Console
|
||||||
|
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||||
|
|
||||||
|
if(Mode == 0){
|
||||||
|
SetConsoleTextAttribute(hCon,FOREGROUND_GREEN);
|
||||||
|
}else{
|
||||||
|
SetConsoleTextAttribute(hCon,color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define PI 3.14159265359
|
||||||
|
|
||||||
|
float sx,sy;
|
||||||
|
|
||||||
|
float sdCircle(float px,float py,float r){
|
||||||
|
float dx = px - sx, dy = py-sy;
|
||||||
|
return sqrtf(dx * dx + dy * dy) - r;
|
||||||
|
}
|
||||||
|
|
||||||
|
float opUnion(float d1,float d2){
|
||||||
|
return d1 < d2 ? d1 : d2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define T px + scale * r * cosf(theta), py + scale * r * sin(theta)
|
||||||
|
|
||||||
|
float f(float px, float py, float theta, float scale, int n){
|
||||||
|
float d = 0.0f;
|
||||||
|
for(float r = 0.0f; r < 0.8f; r += 0.02f){
|
||||||
|
d = opUnion(d,sdCircle(T, 0.05f * scale * (0.95f - r)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(n > 0){
|
||||||
|
for(int t = -1; t <=1; t+=2){
|
||||||
|
float tt = theta + t * 1.8f;
|
||||||
|
float ss = scale * 0.9f;
|
||||||
|
for(float r = 0.2f; r < 0.8f; r += 0.1f){
|
||||||
|
d = opUnion(d, f(T, tt, ss*0.5f, n-1));
|
||||||
|
ss *= 0.8f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char * argv[]){
|
||||||
|
srand((unsigned)time(NULL));
|
||||||
|
int n = argc > 1 ? atoi(argv[1]) : 3;
|
||||||
|
|
||||||
|
int SetCnt = 0;
|
||||||
|
int CntTotal = 0;
|
||||||
|
float fReverseCnt = 0;
|
||||||
|
int ColorIndex = 0;
|
||||||
|
|
||||||
|
for(sy = 0.8f; sy > 0.0f; sy -= 0.02f, putchar('\n') ){
|
||||||
|
ColorIndex++;
|
||||||
|
|
||||||
|
SetCnt = 0;
|
||||||
|
|
||||||
|
for(sx = -0.35f; sx < 0.35f; sx += 0.01f){
|
||||||
|
if(f(0, 0, PI * 0.5f, 1.0f, n) < 0){
|
||||||
|
if(ColorIndex%5 == 0 ){
|
||||||
|
SetColor(1);
|
||||||
|
}else{
|
||||||
|
if(SetCnt < 3){
|
||||||
|
SetCnt++;
|
||||||
|
SetColor(1);
|
||||||
|
|
||||||
|
fReverseCnt = sx + 0.01f;
|
||||||
|
}else if(sx >= fabs(fReverseCnt)){
|
||||||
|
SetColor(1);
|
||||||
|
}else{
|
||||||
|
SetColor(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
putchar(' ');
|
||||||
|
}else{
|
||||||
|
putchar(' ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue