Source Code (Use browser search to find items of interest.)

Class Index

kfract'DrawView (./kdegraphics/kfract/drawview.h:47)

class DrawView : public QWidget
  {
  public:
    enum ColorScheme { Rgb, Hsv };
    enum FractRunning { FUnknown, FMandel, FJulia };
    DrawView( QWidget *parent );
    int getActualIter();
    int getDefaultIter();
    double getActualBailout();
    double getDefaultBailout();
    double getActualCenterX();
    double getDefaultCenterX();
    double getActualCenterY();
    double getDefaultCenterY();
    double getActualWidth();
    double getDefaultWidth();
    double getActualExtraX();
    double getDefaultExtraX();
    double getActualExtraY();
    double getDefaultExtraY();
    double getActualZoomInFactor();
    double getDefaultZoomInFactor();
    double getActualZoomOutFactor();
    double getDefaultZoomOutFactor();
    ColorScheme getActualColorScheme();
    void setNewType( FractRunning new_fract );
    void setTypeUndo();
    void setNewIter( int new_iter );
    void setNewBailout( double new_bailout );
    void setNewCenterX( double new_center_x );
    void setNewCenterY( double new_center_y );
    void setNewWidth( double new_width );
    void setNewExtraX( double new_extra_x );
    void setNewExtraY( double new_extra_y );
    void setNewZoomInFactor( double new_zoom_in_factor );
    void setNewZoomOutFactor( double new_zoom_out_factor );
    void setNewColorScheme( ColorScheme scheme );
    void changeToMandel();
    void changeToJulia();
    void stop();
    void doZoomIn();
    void doZoomOut();
    void goDefaults();
    void loadParam( char *name = NULL );
    void saveParam();
    void savePic();
  protected:
    void paintEvent( QPaintEvent * );
    void resizeEvent( QResizeEvent * );
    void mousePressEvent( QMouseEvent * );
    void mouseReleaseEvent( QMouseEvent * );
    void mouseMoveEvent( QMouseEvent * );
  private:
    void drawCheck();
    void draw();
    void drawMap();
    void magnify( QPoint center, double mag_factor );
    int drawPoint( int x, int y );
    void reset();
    void resetOnChange();
    QWidget *w;
    QPainter *paint;
    QPainter *paint_buf;
    QPixmap *drawbuffer;
    Fract *fract;
    Fract *test_fract;
    int my_button;
    QPoint point_1, point_2;
    double my_width, my_height;
    double center_x, center_y;
    double bail_out;
    int max_iter;
    double fract_ratio;
    double param_1, param_2;
    int old_size_x, old_size_y;
    double zoom_in, zoom_out;
    bool draw_runs, draw_stop, draw_force;
    int points_drawn;
    int *my_map;
    FractRunning last_fract;
    FractRunning new_type;
    ColorScheme act_color_scheme;
    unsigned color_factor;
  };


kfract'DrawView::DrawView() (./kdegraphics/kfract/drawview.C:45)

DrawView::DrawView( QWidget *parent ) :
    QWidget( parent )
  {
  setBackgroundColor( black );
  w = parent;
  paint = new QPainter( this );
  CHECK_PTR( paint );
  fract = new Mandel();
  CHECK_PTR( fract );
  last_fract = FMandel;
  paint_buf = NULL;
  drawbuffer = NULL;
  my_map = NULL;
  reset();
  draw_runs = draw_stop = FALSE;
  }




kfract'DrawView::reset() (./kdegraphics/kfract/drawview.C:64)

void DrawView::reset()
  {
  my_button = NoButton;
  point_1.setX( 0 );
  point_1.setY( 0 );
  point_2.setX( 0 );
  point_2.setX( 0 );
  center_x = FRACT_CENTER_X;
  center_y = FRACT_CENTER_Y;
  my_width = KFRACT_INITIAL_SIZE_X / 100; 
  my_height = KFRACT_INITIAL_SIZE_Y / 100;
  bail_out = 4.0;
  max_iter = DEFAULT_ITER;
  fract_ratio = FRACT_RATIO;
  old_size_x = KFRACT_INITIAL_SIZE_X;
  old_size_y = KFRACT_INITIAL_SIZE_Y;
  param_1 = 0.0;
  param_2 = 0.0;
  zoom_in = 0.5;
  zoom_out = 2.0;
  draw_runs = draw_stop = FALSE;
  draw_force = TRUE;
  if ( my_map != NULL )
    {
    delete my_map;
    }
  my_map = new int[old_size_x * old_size_y * sizeof( int )];
  CHECK_PTR( my_map );
  if ( drawbuffer != NULL )
    {
    delete drawbuffer;
    }
  drawbuffer = new QPixmap( old_size_x, old_size_y + KFRACT_SIZE_DIFF_TOP );
  CHECK_PTR( drawbuffer );
  drawbuffer->fill( black );
  if ( paint_buf != NULL )
    {
    delete paint_buf;
    }
  paint_buf = new QPainter( drawbuffer );
  CHECK_PTR( paint_buf );
  points_drawn = 0;
  center_x = fract->defaultCenterX();
  center_y = fract->defaultCenterY();
  act_color_scheme = Rgb;    //Hsv;
  color_factor = MAXCOLOR / max_iter;
  test_fract = NULL;
  }




kfract'DrawView::resetOnChange() (./kdegraphics/kfract/drawview.C:115)

void DrawView::resetOnChange()
  {
  my_button = NoButton;
  point_1.setX( 0 );
  point_1.setY( 0 );
  point_2.setX( 0 );
  point_2.setX( 0 );
  draw_runs = draw_stop = FALSE;
  draw_force = TRUE;
  drawbuffer->fill( black );
  points_drawn = 0;
  center_x = fract->defaultCenterX();
  center_y = fract->defaultCenterY();
  param_1 = fract->defaultExtraX();
  param_2 = fract->defaultExtraY();
  my_width = fract->defaultWidth();
  my_height = ( my_width * ( height() - KFRACT_SIZE_DIFF_TOP ) ) / width();
  fract_ratio = my_width / width();
  bail_out = fract->defaultBailout();
  }



kfract'DrawView::changeToMandel() (./kdegraphics/kfract/drawview.C:137)

void DrawView::changeToMandel()
  {
  if ( last_fract != FMandel )
    {
    last_fract = FMandel;
    if ( fract != NULL )
      {
      delete fract;
      }
    fract = new Mandel();
    CHECK_PTR( fract );
    resetOnChange();
    param_1 = 0.0;
    param_2 = 0.0;
    }
  }





kfract'DrawView::changeToJulia() (./kdegraphics/kfract/drawview.C:157)

void DrawView::changeToJulia()
  {
  if ( last_fract != FJulia )
    {
    last_fract = FJulia;
    if ( fract != NULL )
      {
      delete fract;
      }
    fract = new Julia();
    CHECK_PTR( fract );
    resetOnChange();
    param_1 = JULIA_X;
    param_2 = JULIA_Y;
    }
  }




kfract'DrawView::doZoomIn() (./kdegraphics/kfract/drawview.C:176)

void DrawView::doZoomIn()
  {
  QPoint center;

  center.setX( old_size_x / 2 );
  center.setY( old_size_y / 2 );
  magnify( center, zoom_in );
  }




kfract'DrawView::doZoomOut() (./kdegraphics/kfract/drawview.C:187)

void DrawView::doZoomOut()
  {
  QPoint center;

  center.setX( old_size_x / 2 );
  center.setY( old_size_y / 2 );
  magnify( center, zoom_out );
  }




kfract'DrawView::goDefaults() (./kdegraphics/kfract/drawview.C:198)

void DrawView::goDefaults()
  {
  setNewIter( DEFAULT_ITER );
  setNewBailout( fract->defaultBailout() );
  setNewCenterX( fract->defaultCenterX() );
  setNewCenterY( fract->defaultCenterY() );
  setNewWidth( fract->defaultWidth() );
  setNewExtraX( fract->defaultExtraX() );
  setNewExtraY( fract->defaultExtraY() );
  }




kfract'DrawView::paintEvent() (./kdegraphics/kfract/drawview.C:211)

void DrawView::paintEvent( QPaintEvent * )
  {
  if ( draw_force )
    {
    if ( !draw_runs )  
      {
      draw();
      }
    }
  else
    {
    drawMap();
    } 
  }



kfract'DrawView::drawCheck() (./kdegraphics/kfract/drawview.C:227)

void DrawView::drawCheck()
  {
  draw_force = TRUE;
  if ( draw_runs )  
    {
    if ( draw_stop == FALSE )
      {
      draw_stop = TRUE;
      }
    }
  else
    {
    update();
    }
  }



kfract'DrawView::draw() (./kdegraphics/kfract/drawview.C:244)

void DrawView::draw()
  {
  int x_max, y_max;
  int x, y;
  int *map_pointer;

  draw_runs = TRUE;
  draw_force = FALSE;
  points_drawn = 0;
  x_max = width();
  y_max = height();
  fract->init( center_x, center_y, fract_ratio, fract_ratio,
               x_max, y_max - KFRACT_SIZE_DIFF_TOP, max_iter, bail_out,
               param_1, param_2 );
  map_pointer = my_map;
  for ( y = KFRACT_SIZE_DIFF_TOP; y < y_max; y++ )
    {
    for ( x = 0; x < x_max; x++ )
      {
      if ( draw_stop )
        {
        draw_runs = draw_stop = FALSE;
        update();
        return;
        }
      *map_pointer++ = drawPoint( x, y );
      points_drawn++;
      }
    bitBlt( this, 0, y, drawbuffer, 0, y, 
                  x_max, 1, CopyROP, FALSE );
    qApp->processEvents();
    }
  draw_runs = draw_stop = FALSE;
  }



kfract'DrawView::drawMap() (./kdegraphics/kfract/drawview.C:280)

void DrawView::drawMap()
  {
  bitBlt( this, 0, KFRACT_SIZE_DIFF_TOP, 
          drawbuffer, 0, KFRACT_SIZE_DIFF_TOP, 
          width(), height() - KFRACT_SIZE_DIFF_TOP,
          CopyROP, FALSE);
       
  }



kfract'DrawView::resizeEvent() (./kdegraphics/kfract/drawview.C:290)

void DrawView::resizeEvent( QResizeEvent * )
  {

  my_width *= ( double ) width() / old_size_x;
  my_height = ( double ) ( my_width * ( height() - KFRACT_SIZE_DIFF_TOP ) ) / 
                                                                   width();
  old_size_x = width();
  old_size_y = height() - KFRACT_SIZE_DIFF_TOP;
  delete my_map;
  my_map = new int[ old_size_x * old_size_y * sizeof( int )];
  CHECK_PTR( my_map );
  delete paint_buf;
  delete drawbuffer;
  drawbuffer = new QPixmap( old_size_x, old_size_y + KFRACT_SIZE_DIFF_TOP );
  CHECK_PTR( drawbuffer );
  drawbuffer->fill( black );
  paint_buf = new QPainter( drawbuffer );
  CHECK_PTR( paint_buf );
  points_drawn = 0;
  drawCheck();
  }



kfract'DrawView::mousePressEvent() (./kdegraphics/kfract/drawview.C:313)

void DrawView::mousePressEvent( QMouseEvent *e )
  {
  int this_button;

  this_button = e->button() & MouseButtonMask;
  if ( my_button == NoButton )
    {
    switch ( this_button )
      {
      case LeftButton:
           point_1 = point_2 = e->pos();
           my_button = my_button | LeftButton;
           break;
      case MidButton:
           magnify( e->pos(), zoom_in );
           break;
      default:
           magnify( e->pos(), zoom_out );
           break;
      }
    }
  }



kfract'DrawView::mouseReleaseEvent() (./kdegraphics/kfract/drawview.C:337)

void DrawView::mouseReleaseEvent( QMouseEvent *e )
  {
  int this_button;
  int my_left, my_right, my_top, my_bottom;

  this_button = e->button() & MouseButtonMask;

  switch ( this_button )
    {
    case LeftButton:
         if ( my_button == LeftButton )
           {
           point_2 = e->pos();
           my_left = QMIN( point_1.x(), point_2.x() );
           my_right = QMAX( point_1.x(), point_2.x() );
           my_top = QMIN( point_1.y(), point_2.y() );
           my_bottom = QMAX( point_1.y(), point_2.y() );
           if ( ( my_top != my_bottom ) && ( my_left != my_right ) )
             {
             center_x = center_x - my_width / 2.0 +
                        fract_ratio * my_left +
                        ( fract_ratio * ( my_right - my_left ) ) / 2.0;
             center_y = center_y - my_height / 2.0 +
                        fract_ratio * ( my_top - KFRACT_SIZE_DIFF_TOP ) +
                        ( fract_ratio * ( my_bottom - my_top ) ) / 2.0;
             my_width = ( my_width * ( my_right - my_left ) ) / width();
             my_height = ( my_width * ( height() - KFRACT_SIZE_DIFF_TOP ) ) / 
                                                                     width();
             fract_ratio = my_width / width();
             drawbuffer->fill( black );
             drawCheck();
             }
           else
             {
             bitBlt( this, my_left, my_top,
                     drawbuffer, my_left, my_top, my_right - my_left + 1,
                                                  my_bottom - my_top + 1,
                     CopyROP, FALSE );
             }
           }
         my_button = NoButton;
         break;
    case MidButton:
         my_button &= ~MidButton;
         break;
    case RightButton:
         my_button &= ~RightButton;
         break;
    default:
         break;
    }
  }



kfract'DrawView::mouseMoveEvent() (./kdegraphics/kfract/drawview.C:391)

void DrawView::mouseMoveEvent( QMouseEvent *e )
  {
  int x1, x2, y1, y2;
  int current_x, current_y;

  current_x = e->x();
  current_y = e->y();
  if ( ( my_button & LeftButton ) == LeftButton )
    {
    x1 = QMIN( point_1.x(), point_2.x() );
    x2 = QMAX( point_1.x(), point_2.x() );
    y1 = QMIN( point_1.y(), point_2.y() );
    y2 = QMAX( point_1.y(), point_2.y() );
    bitBlt( this, x1, y1, drawbuffer, x1, y1, x2 - x1 + 1, y2 - y1 +1,
            CopyROP, FALSE );
    paint->setPen( white );
    paint->drawLine( point_1.x(), point_1.y(), current_x, point_1.y() );
    paint->drawLine( point_1.x(), current_y, current_x, current_y );
    paint->drawLine( point_1.x(), point_1.y(), point_1.x(), current_y );
    paint->drawLine( current_x, point_1.y(), current_x, current_y);
    point_2.setX( current_x );
    point_2.setY( current_y );
    }
  }



kfract'DrawView::drawPoint() (./kdegraphics/kfract/drawview.C:417)

int DrawView::drawPoint( int x, int y )
  {
  int result;
  QColor c;

  result = fract->calcPoint( x, y - KFRACT_SIZE_DIFF_TOP );
  if ( result == max_iter )
    {
    paint_buf->setPen( black );
    }
  else
    {
    switch ( act_color_scheme )
      {
      case Rgb: 
        c.setRgb( result * color_factor );
        break;
      case Hsv:
        c.setHsv( ( result % 72 ) * 5, 255, 255 );
        break;
      default:
        c.setHsv( ( result % 72 ) * 5, 255, 255 );   // just in case ...
        break;
      }
    paint_buf->setPen( c );
    }
  paint_buf->drawPoint( x, y );
  return result;
  }



kfract'DrawView::magnify() (./kdegraphics/kfract/drawview.C:448)

void DrawView::magnify( QPoint center, double mag_factor )
  {
  center_x += fract_ratio * center.x() - my_width / 2.0;
  center_y += fract_ratio * ( center.y() - KFRACT_SIZE_DIFF_TOP ) - 
                                                  my_height / 2.0;
  my_width *= mag_factor;
// We do it this way in order to get the X/Y ration straight regardless how
// often we zoom in or out.
  my_height = ( my_width * ( height() - KFRACT_SIZE_DIFF_TOP ) ) / width();
  fract_ratio = my_width / width();
  drawbuffer->fill( black );
  drawCheck();
  }




kfract'DrawView::getActualIter() (./kdegraphics/kfract/drawview.C:464)

int DrawView::getActualIter()
  {
  int rc;

  if ( last_fract == new_type )
    {
    rc = max_iter;
    }
  else
    {
    if ( new_type == FUnknown )
      {
      rc = max_iter;
      }
    else
      {
      rc = DEFAULT_ITER;
      }
    }
  return rc;
  }




kfract'DrawView::getDefaultIter() (./kdegraphics/kfract/drawview.C:488)

int DrawView::getDefaultIter()
  {
  return DEFAULT_ITER;
  }




kfract'DrawView::getActualBailout() (./kdegraphics/kfract/drawview.C:495)

double DrawView::getActualBailout()
  {
  double rc;

  if ( last_fract == new_type )
    {
    rc = bail_out;
    }
  else
    {
    rc = test_fract->defaultBailout();
    }
  return rc;
  }




kfract'DrawView::getDefaultBailout() (./kdegraphics/kfract/drawview.C:512)

double DrawView::getDefaultBailout()
  {
  return test_fract->defaultBailout();
  }




kfract'DrawView::getActualCenterX() (./kdegraphics/kfract/drawview.C:519)

double DrawView::getActualCenterX()
  {
  double rc;

  if ( last_fract == new_type )
    {
    rc = center_x;
    }
  else
    {
    rc = test_fract->defaultCenterX();
    }
  return rc;
  }



kfract'DrawView::getDefaultCenterX() (./kdegraphics/kfract/drawview.C:535)

double DrawView::getDefaultCenterX()
  {
  return test_fract->defaultCenterX();
  }



kfract'DrawView::getActualCenterY() (./kdegraphics/kfract/drawview.C:541)

double DrawView::getActualCenterY()
  {
  double rc;

  if (last_fract == new_type )
    {
    rc = center_y;
    }
  else
    {
    rc = test_fract->defaultCenterY();
    }
  return rc;
  }



kfract'DrawView::getDefaultCenterY() (./kdegraphics/kfract/drawview.C:557)

double DrawView::getDefaultCenterY()
  {
  return test_fract->defaultCenterY();
  }



kfract'DrawView::getActualWidth() (./kdegraphics/kfract/drawview.C:563)

double DrawView::getActualWidth()
  {
  double rc;

  if ( last_fract == new_type )
    {
    rc = my_width;
    }
  else
    {
    rc = test_fract->defaultWidth();
    }
  return rc;
  }



kfract'DrawView::getDefaultWidth() (./kdegraphics/kfract/drawview.C:579)

double DrawView::getDefaultWidth()
  {
  return test_fract->defaultWidth();
  }



kfract'DrawView::getActualExtraX() (./kdegraphics/kfract/drawview.C:585)

double DrawView::getActualExtraX()
  {
  double rc;
  if ( last_fract == new_type )
    {
    rc = param_1;
    }
  else
    {
    rc = test_fract->defaultExtraX();
    }
  return rc;
  }



kfract'DrawView::getDefaultExtraX() (./kdegraphics/kfract/drawview.C:600)

double DrawView::getDefaultExtraX()
  {
  return test_fract->defaultExtraX();
  }



kfract'DrawView::getActualExtraY() (./kdegraphics/kfract/drawview.C:606)

double DrawView::getActualExtraY()
  {
  double rc;

  if ( last_fract == new_type )
    {
    rc = param_2;
    }
  else
    {
    rc = test_fract->defaultExtraY();
    }
  return rc;
  }



kfract'DrawView::getDefaultExtraY() (./kdegraphics/kfract/drawview.C:622)

double DrawView::getDefaultExtraY()
  {
  return test_fract->defaultExtraY();
  }



kfract'DrawView::getActualZoomInFactor() (./kdegraphics/kfract/drawview.C:628)

double DrawView::getActualZoomInFactor()
  {
  return zoom_in;
  }



kfract'DrawView::getDefaultZoomInFactor() (./kdegraphics/kfract/drawview.C:634)

double DrawView::getDefaultZoomInFactor()
  {
  return 0.5;
  }



kfract'DrawView::getActualZoomOutFactor() (./kdegraphics/kfract/drawview.C:640)

double DrawView::getActualZoomOutFactor()
  {
  return zoom_out;
  }



kfract'DrawView::getDefaultZoomOutFactor() (./kdegraphics/kfract/drawview.C:646)

double DrawView::getDefaultZoomOutFactor()
  {
  return 2.0;
  }


DrawView::ColorScheme DrawView::getActualColorScheme()
  {
  return act_color_scheme;
  }



kfract'DrawView::setNewType() (./kdegraphics/kfract/drawview.C:658)

void DrawView::setNewType( FractRunning new_fract )
  {
  new_type = new_fract;
  if ( test_fract != NULL )
    {
    delete test_fract;
    }
  switch ( new_fract )
    {
    case FMandel:
      test_fract = new Mandel();
      break;
    case FJulia:
      test_fract = new Julia();
      break;
    default:
      test_fract = new Mandel();     // just in case ...
      break;
    }
  }



kfract'DrawView::setTypeUndo() (./kdegraphics/kfract/drawview.C:680)

void DrawView::setTypeUndo()
  {
  new_type = FUnknown;
  if ( test_fract != NULL )
    {
    delete test_fract;
    test_fract = NULL;
    }
  }



kfract'DrawView::setNewIter() (./kdegraphics/kfract/drawview.C:691)

void DrawView::setNewIter( int new_iter )
  {
  if ( max_iter != new_iter )
    {
    max_iter = new_iter;
    color_factor = MAXCOLOR / max_iter;
    drawbuffer->fill( black );
    drawCheck();
    }
  }




kfract'DrawView::setNewBailout() (./kdegraphics/kfract/drawview.C:704)

void DrawView::setNewBailout( double new_bailout )
  {
  if ( bail_out != new_bailout )
    {
    bail_out = new_bailout;
    drawbuffer->fill( black );
    drawCheck();
    }
  }




kfract'DrawView::setNewCenterX() (./kdegraphics/kfract/drawview.C:716)

void DrawView::setNewCenterX( double new_center_x )
  {
  if ( center_x != new_center_x )
    {
    center_x = new_center_x;
    drawbuffer->fill( black );
    drawCheck();
    }
  }




kfract'DrawView::setNewCenterY() (./kdegraphics/kfract/drawview.C:728)

void DrawView::setNewCenterY( double new_center_y )
  {
  if (center_y != new_center_y )
    {
    center_y = new_center_y;
    drawbuffer->fill( black );
    drawCheck();
    }
  }




kfract'DrawView::setNewWidth() (./kdegraphics/kfract/drawview.C:740)

void DrawView::setNewWidth( double new_width )
  {
  if ( my_width != new_width )
    {
    my_width = new_width;
// We do it this way in order to get the X/Y ration straight regardless how
// often we zoom in or out.
    my_height = ( my_width * ( height() - KFRACT_SIZE_DIFF_TOP ) ) / width();
    fract_ratio = my_width / width();
    drawbuffer->fill( black );
    drawCheck();
    }
  }




kfract'DrawView::setNewExtraX() (./kdegraphics/kfract/drawview.C:756)

void DrawView::setNewExtraX( double new_extra_x )
  {
  if ( param_1 != new_extra_x )
    {
    param_1 = new_extra_x;
    drawbuffer->fill( black );
    drawCheck();
    }
  }




kfract'DrawView::setNewExtraY() (./kdegraphics/kfract/drawview.C:768)

void DrawView::setNewExtraY( double new_extra_y )
  {
  if ( param_2 != new_extra_y )
    {
    param_2 = new_extra_y;
    drawbuffer->fill( black );
    drawCheck();
    }
  }



kfract'DrawView::setNewZoomInFactor() (./kdegraphics/kfract/drawview.C:779)

void DrawView::setNewZoomInFactor( double new_zoom_in_factor )
  {
  zoom_in = new_zoom_in_factor;
  }



kfract'DrawView::setNewZoomOutFactor() (./kdegraphics/kfract/drawview.C:785)

void DrawView::setNewZoomOutFactor( double new_zoom_out_factor )
  {
  zoom_out = new_zoom_out_factor;
  }



kfract'DrawView::setNewColorScheme() (./kdegraphics/kfract/drawview.C:791)

void DrawView::setNewColorScheme( ColorScheme scheme )
  {
  if ( act_color_scheme != scheme )
    {
    act_color_scheme = scheme;
    drawbuffer->fill( black );
    drawCheck();
    }
  }



kfract'DrawView::stop() (./kdegraphics/kfract/drawview.C:802)

void DrawView::stop()
  {
  draw_stop = TRUE;
  }



kfract'DrawView::saveParam() (./kdegraphics/kfract/drawview.C:808)

void DrawView::saveParam()
  {
  QString filename;

  filename = QFileDialog::getSaveFileName( QString::null, "*.fct", this );
  if ( filename.isNull() )
    {
    return;
    }
  QFile file( filename );
  if ( file.open ( IO_WriteOnly | IO_Truncate ) )
    {
    QTextStream t( &file );
    t.precision( 50 );
    t << "KFract-0.1.1\n";
    switch( last_fract )
      {
      case FMandel:
        t << "mandelbrot\n";
        break;
      case FJulia:
        t << "julia\n";
        break;
      default:
        t << "bullshit\n";
        break;        // How dare you!
      }
    t << center_x  << "\n";
    t << center_y  << "\n";
    t << my_width  << "\n";
    t << my_height  << "\n";
    t << bail_out << "\n";
    t << max_iter  << "\n";
    t << param_1 << "\n";
    t << param_2 << "\n";
    file.close();
    }
  }



kfract'DrawView::savePic() (./kdegraphics/kfract/drawview.C:848)

void DrawView::savePic()
  {
  QString filename;
  QPixmap *buffer;

  filename = QFileDialog::getSaveFileName( QString::null, "*.bmp", this );
  if ( !filename.isNull() )
    {
    buffer = new QPixmap( old_size_x, old_size_y );
    CHECK_PTR( buffer );
    bitBlt( buffer, 0, 0, 
            drawbuffer, 0, KFRACT_SIZE_DIFF_TOP,
            old_size_x, old_size_y,
            CopyROP, FALSE );
    buffer->save( filename, "BMP" );
    delete buffer;
    }
  }



kfract'DrawView::loadParam() (./kdegraphics/kfract/drawview.C:868)

void DrawView::loadParam( char *name )
  {
  QString filename;
  QString line;

  if ( name == NULL )
    {
    filename = QFileDialog::getOpenFileName ( QString::null, "*.fct", this );
    if ( filename.isNull() )
      {
      return;
      }
    }
  else
    {
    filename = name;
    }
  QFile file( filename );
  if ( file.open( IO_ReadOnly ) )
    {
    QTextStream t( &file );
    t >> line;
    if ( line == "KFract-0.1.1" )
      {
      delete fract;
      line = QString::null;
      t >> line;
      if ( line == "mandelbrot" )
        {
        last_fract = FMandel;
        fract = new Mandel();
        }
      else
        {
        if ( line == "julia" )
          {
          last_fract = FJulia;
          fract = new Julia();
          }
        else
          {
          exit ( 1 );     // Oops!
          }
        }
      t >> center_x;
      t >> center_y;
      t >> my_width;
      t >> my_height;
      t >> bail_out;
      t >> max_iter;
      t >> param_1;
      t >> param_2;
      file.close();
      my_height = ( my_width * height() ) / width();
      fract_ratio = my_width / width();
      drawbuffer->fill( black );
      points_drawn = 0;
      draw_force = TRUE;
      update();
      }
    }
  }