コード例 #1
0
ファイル: gdlwxstream.cpp プロジェクト: vedraiyani/GDL
GDLWXStream::GDLWXStream( int width, int height )
: GDLGStream( width, height, "wxwidgets")
  , m_dc(NULL)
  , m_bitmap(NULL)
  , m_width(width), m_height(height)
  , gdlWindow(NULL)
{
  m_dc = new wxMemoryDC();
  m_bitmap = new wxBitmap( width, height, -1 );
  m_dc->SelectObject( *m_bitmap);
  if( !m_dc->IsOk())
  {
    m_dc->SelectObject( wxNullBitmap );
    delete m_bitmap;
    delete m_dc;
    throw GDLException("GDLWXStream: Failed to create DC.");
  }

  //::plstream();
//   sdev( "wxwidgets" );
  spage( 0.0, 0.0, m_width, m_height, 0, 0 );
//   SETOPT( "text", "1" ); // use freetype?
//   SETOPT( "smooth", "1" );  // antialiased text?
  this->plstream::init();

  plP_esc( PLESC_DEVINIT, (void*)m_dc );

  plstream::set_stream();
//   plgpls( &thePls); // in GDLGStream
}
コード例 #2
0
ファイル: os_lab2.c プロジェクト: kr11/v9-cpu
setup_paging()
{
  int i;
  //设置页表的初始地址
  pg_dir = (int *)((((int)&pg_mem) + 4095) & -4096);
  //分四页,每页1024*4个字节,即4KB
  pg0 = pg_dir + 1024;
  pg1 = pg0 + 1024;
  pg2 = pg1 + 1024;
  pg3 = pg2 + 1024;
  
  pg_dir[0] = (int)pg0 | PTE_P | PTE_W | PTE_U;  // identity map 16M
  pg_dir[1] = (int)pg1 | PTE_P | PTE_W | PTE_U;
  pg_dir[2] = (int)pg2 | PTE_P | PTE_W | PTE_U;
  pg_dir[3] = (int)pg3 | PTE_P | PTE_W | PTE_U;
  //这一步是用来对齐的吗?一个物理内存块是4KB,页表初始地址管理四个页块,而pg0是从pg_dir+1024开始的,因此把4~1024这部分赋值为0
  for (i=4;i<1024;i++) pg_dir[i] = 0;
  //初始化四个页面。每个页起初都是可用的,又因为一个4KB页为2^12,因此页块的物理地址低12位都是0,用于存储页的状态(PTE_P | PTE_W | PTE_U)。
  for (i=0;i<4096;i++) pg0[i] = (i<<12) | PTE_P | PTE_W | PTE_U;  // trick to write all 4 contiguous pages
  //页起始地址设置
  pdir(pg_dir);
  //设置页机制(使能)
  spage(1);
}