Changeset 315

Show
Ignore:
Timestamp:
08/26/08 01:11:47 (3 months ago)
Author:
mattn
Message:

* merged background images back into 1.5 branch
* fixed warnings and bugs (nDim)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • GtkRadiant/branches/1.5/radiant/mainframe.cpp

    r256 r315  
    189189#if defined(POSIX) 
    190190  const char* prefix = g_pGameDescription->getKeyValue("prefix"); 
    191   if(!string_empty(prefix))  
     191  if(!string_empty(prefix)) 
    192192  { 
    193193    StringOutputStream path(256); 
     
    516516    strcpy(fullname, m_path); 
    517517    strcat(fullname, name); 
    518     globalOutputStream() << "Found '" << fullname << "'\n";       
     518    globalOutputStream() << "Found '" << fullname << "'\n"; 
    519519    GlobalModuleServer_loadModule(fullname); 
    520520  } 
     
    549549    path << directory << g_modulesDir; 
    550550    Radiant_loadModules(path.c_str()); 
    551   }  
     551  } 
    552552} 
    553553 
     
    602602{ 
    603603  GlobalModuleServer_Initialise(); 
    604    
     604 
    605605  Radiant_loadModulesFromRoot(AppPath_get()); 
    606606 
     
    697697  { 
    698698    UndoableCommand undo("paste"); 
    699      
     699 
    700700    GlobalSelectionSystem().setSelectedAll(false); 
    701701    Selection_Paste(); 
     
    711711  CamWnd& camwnd = *g_pParentWnd->GetCamWnd(); 
    712712  GlobalSelectionSystem().setSelectedAll(false); 
    713    
     713 
    714714  UndoableCommand undo("pasteToCamera"); 
    715    
     715 
    716716  Selection_Paste(); 
    717    
     717 
    718718  // Work out the delta 
    719719  Vector3 mid; 
    720720  Select_GetMid(mid); 
    721721  Vector3 delta = vector3_subtracted(vector3_snapped(Camera_getOrigin(camwnd), GetGridSize()), mid); 
    722    
     722 
    723723  // Move to camera 
    724724  GlobalSelectionSystem().translateSelected(delta); 
     
    944944  create_menu_item_with_mnemonic(menu_in_menu, "Grid Block...", "ChooseGridBlockColor"); 
    945945  create_menu_item_with_mnemonic(menu_in_menu, "Default Brush...", "ChooseBrushColor"); 
    946   create_menu_item_with_mnemonic(menu_in_menu, "Camera Background...", "ChooseCameraBackgroundColor");   
     946  create_menu_item_with_mnemonic(menu_in_menu, "Camera Background...", "ChooseCameraBackgroundColor"); 
    947947  create_menu_item_with_mnemonic(menu_in_menu, "Selected Brush...", "ChooseSelectedBrushColor"); 
    948948  create_menu_item_with_mnemonic(menu_in_menu, "Selected Brush (Camera)...", "ChooseCameraSelectedBrushColor"); 
     
    10131013 
    10141014void EntityInspector_ToggleShow() 
    1015 {   
     1015{ 
    10161016  GroupDialog_showPage(g_page_entity); 
    10171017} 
     
    11921192    if(path.size() == 1) 
    11931193      return true; 
    1194      
     1194 
    11951195    if(!path.top().get().isRoot()) 
    11961196    { 
     
    22432243  // http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=394 
    22442244//  create_menu_item_with_mnemonic(menu, "_Print XY View", FreeCaller<WXY_Print>()); 
    2245  
     2245  create_menu_item_with_mnemonic(menu, "_Background select", FreeCaller<WXY_BackgroundSelect>()); 
    22462246  return misc_menu_item; 
    22472247} 
     
    26422642      gtk_widget_show(GTK_WIDGET(g_wait.m_window)); 
    26432643    } 
    2644      
     2644 
    26452645    return FALSE; 
    26462646  } 
     
    27202720  { 
    27212721    gtk_widget_destroy(*i); 
    2722   }   
     2722  } 
    27232723 
    27242724  gtk_widget_destroy(GTK_WIDGET(m_window)); 
     
    30703070      m_pXYWnd->m_parent = window; 
    30713071      m_pXYWnd->SetViewType(XY); 
    3072        
     3072 
    30733073 
    30743074      { 
     
    31523152    gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(split), TRUE, TRUE, 0); 
    31533153 
    3154     {       
     3154    { 
    31553155      GtkFrame* frame = create_framed_widget(TextureBrowser_constructWindow(window)); 
    31563156      g_page_textures = GroupDialog_addPage("Textures", GTK_WIDGET(frame), TextureBrowserExportTitleCaller()); 
     
    31743174 
    31753175  EverySecondTimer_enable(); 
    3176   
     3176 
    31773177  //GlobalShortcuts_reportUnregistered(); 
    31783178} 
     
    31973197 
    31983198  g_layout_globals.m_position = m_position_tracker.getPosition(); 
    3199   
     3199 
    32003200  g_layout_globals.nState = gdk_window_get_state(GTK_WIDGET(m_window)->window); 
    32013201} 
  • GtkRadiant/branches/1.5/radiant/xywindow.cpp

    r173 r315  
    3434#include "ibrush.h" 
    3535#include "iundo.h" 
     36#include "iimage.h" 
     37#include "ifilesystem.h" 
     38#include "os/path.h" 
     39#include "image.h" 
     40#include "gtkutil/messagebox.h" 
    3641 
    3742#include <gtk/gtklabel.h> 
     
    5156#include "gtkutil/widget.h" 
    5257#include "gtkutil/glwidget.h" 
     58#include "gtkutil/filechooser.h" 
    5359#include "gtkmisc.h" 
    5460#include "select.h" 
     
    6672#include "windowobservers.h" 
    6773 
     74void LoadTextureRGBA(qtexture_t* q, unsigned char* pPixels, int nWidth, int nHeight); 
    6875 
    6976// d1223m 
     
    98105    return m_ptClip; 
    99106  }; 
    100    
     107 
    101108  /*! Draw clip/path point with rasterized number label */ 
    102109  void Draw(int num, float scale); 
     
    210217                int x = (n == 0) ? 1 : 0; 
    211218                int y = (n == 2) ? 1 : 2; 
    212                  
     219 
    213220                if (n == 1) // on viewtype XZ, flip clip points 
    214221                { 
     
    334341    g_Clip3.Set(true); 
    335342  } 
    336   else  
     343  else 
    337344  { 
    338345    g_Clip1.Reset(); 
     
    576583  glReadPixels (0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE,img); 
    577584 
    578   FILE *fp;  
     585  FILE *fp; 
    579586  fp = fopen(filename, "wb"); 
    580587  if (fp) 
     
    627634          putc(buf[col], fp); 
    628635        } 
    629       byteswritten += row_size;  
     636      byteswritten += row_size; 
    630637 
    631638      unsigned long count; 
     
    851858  m_viewType = XY; 
    852859 
     860  m_backgroundActivated = false; 
     861  m_alpha = 1.0f; 
     862  m_xmin = 0.0f; 
     863  m_ymin = 0.0f; 
     864  m_xmax = 0.0f; 
     865  m_ymax = 0.0f; 
     866 
    853867  m_entityCreate = false; 
    854868 
     
    951965  Select_GetMid(mid); 
    952966  g_clip_viewtype = static_cast<VIEWTYPE>(GetViewType()); 
    953   int nDim = (g_clip_viewtype == YZ ) ? nDim = 0 : ( (g_clip_viewtype == XZ) ? nDim = 1 : nDim = 2 ); 
     967  const int nDim = (g_clip_viewtype == YZ ) ? 0 : ( (g_clip_viewtype == XZ) ? 1 : 2 ); 
    954968  point[nDim] = mid[nDim]; 
    955969  vector3_snap(point, GetGridSize()); 
     
    11131127  // d1223m 
    11141128  //Scene_BrushResize_Selected(GlobalSceneGraph(), aabb_for_minmax(mins, maxs), TextureBrowser_GetSelectedShader(GlobalTextureBrowser())); 
    1115   Scene_BrushResize_Selected(GlobalSceneGraph(), aabb_for_minmax(mins, maxs),  
    1116         g_brush_always_caulk ?  
     1129  Scene_BrushResize_Selected(GlobalSceneGraph(), aabb_for_minmax(mins, maxs), 
     1130        g_brush_always_caulk ? 
    11171131            "textures/common/caulk" : TextureBrowser_GetSelectedShader(GlobalTextureBrowser())); 
    11181132} 
     
    13451359void XYWnd::SetViewType(VIEWTYPE viewType) 
    13461360{ 
    1347   m_viewType = viewType;  
     1361  m_viewType = viewType; 
    13481362  updateModelview(); 
    13491363 
     
    13901404  // mbutton = angle camera 
    13911405  else if(buttons == OrientCamera_buttons()) 
    1392   {     
     1406  { 
    13931407    XYWnd_OrientCamera(this, x, y, *g_pParentWnd->GetCamWnd()); 
    13941408  } 
     
    14541468  // mbutton = angle camera 
    14551469  else if (getButtonState() == OrientCamera_buttons()) 
    1456   {     
     1470  { 
    14571471    XYWnd_OrientCamera(this, x, y, *g_pParentWnd->GetCamWnd()); 
    14581472  } 
     
    15571571} 
    15581572 
     1573void XYWnd::XY_LoadBackgroundImage(const char *name) 
     1574{ 
     1575        const char* relative = path_make_relative(name, GlobalFileSystem().findRoot(name)); 
     1576        if (relative == name) 
     1577                globalOutputStream() << "WARNING: could not extract the relative path, using full path instead\n"; 
     1578 
     1579        char fileNameWithoutExt[512]; 
     1580        strncpy(fileNameWithoutExt, relative, sizeof(fileNameWithoutExt) - 1); 
     1581        fileNameWithoutExt[512 - 1] = '\0'; 
     1582        fileNameWithoutExt[strlen(fileNameWithoutExt) - 4] = '\0'; 
     1583 
     1584        Image *image = QERApp_LoadImage(0, fileNameWithoutExt); 
     1585        if (!image) { 
     1586                globalOutputStream() << "Could not load texture " << fileNameWithoutExt << "\n"; 
     1587                return; 
     1588        } 
     1589        g_pParentWnd->ActiveXY()->m_tex = (qtexture_t*)malloc(sizeof(qtexture_t)); 
     1590        LoadTextureRGBA(g_pParentWnd->ActiveXY()->XYWnd::m_tex, image->getRGBAPixels(), image->getWidth(), image->getHeight()); 
     1591        globalOutputStream() << "Loaded background texture " << relative << "\n"; 
     1592        g_pParentWnd->ActiveXY()->m_backgroundActivated = true; 
     1593 
     1594        int m_ix, m_iy; 
     1595        switch(g_pParentWnd->ActiveXY()->m_viewType) 
     1596        { 
     1597                case XY: 
     1598                        m_ix = 0; 
     1599                        m_iy = 1; 
     1600                        break; 
     1601                case XZ: 
     1602                        m_ix = 0; 
     1603                        m_iy = 2; 
     1604                        break; 
     1605                case YZ: 
     1606                        m_ix = 1; 
     1607                        m_iy = 2; 
     1608                        break; 
     1609        } 
     1610 
     1611        Vector3 min, max; 
     1612        Select_GetBounds(min, max); 
     1613        g_pParentWnd->ActiveXY()->m_xmin = min[m_ix]; 
     1614        g_pParentWnd->ActiveXY()->m_ymin = min[m_iy]; 
     1615        g_pParentWnd->ActiveXY()->m_xmax = max[m_ix]; 
     1616        g_pParentWnd->ActiveXY()->m_ymax = max[m_iy]; 
     1617} 
     1618 
     1619void XYWnd::XY_DisableBackground (void) 
     1620{ 
     1621        g_pParentWnd->ActiveXY()->m_backgroundActivated = false; 
     1622        if (g_pParentWnd->ActiveXY()->m_tex) 
     1623                free(g_pParentWnd->ActiveXY()->m_tex); 
     1624        g_pParentWnd->ActiveXY()->m_tex = NULL; 
     1625} 
     1626 
     1627void WXY_BackgroundSelect(void) 
     1628{ 
     1629        bool brushesSelected = Scene_countSelectedBrushes(GlobalSceneGraph()) != 0; 
     1630        if (!brushesSelected) { 
     1631                gtk_MessageBox(0, "You have to select some brushes to get the bounding box for.\n", 
     1632                                        "No selection", eMB_OK, eMB_ICONERROR); 
     1633                return; 
     1634        } 
     1635 
     1636        const char *filename = file_dialog(GTK_WIDGET(MainFrame_getWindow()), TRUE, "Background Image", NULL, NULL); 
     1637        g_pParentWnd->ActiveXY()->XY_DisableBackground(); 
     1638        if (filename) 
     1639                g_pParentWnd->ActiveXY()->XY_LoadBackgroundImage(filename); 
     1640} 
     1641 
    15591642/* 
    15601643============================================================================ 
     
    15761659} 
    15771660 
    1578 void XYWnd::XY_DrawGrid() 
    1579 
    1580   float x, y, xb, xe, yb, ye; 
    1581   float         w, h; 
    1582   char  text[32]; 
    1583   float step, minor_step, stepx, stepy; 
    1584   step = minor_step = stepx = stepy = GetGridSize(); 
    1585    
    1586   int minor_power = Grid_getPower(); 
    1587   int mask; 
    1588  
    1589   while((minor_step * m_fScale) <= 4.0f) // make sure minor grid spacing is at least 4 pixels on the screen 
    1590   { 
    1591     ++minor_power; 
    1592     minor_step *= 2; 
    1593   } 
    1594   int power = minor_power; 
    1595   while((power % 3) != 0 || (step * m_fScale) <= 32.0f) // make sure major grid spacing is at least 32 pixels on the screen 
    1596   { 
    1597     ++power; 
    1598     step = float(two_to_the_power(power)); 
    1599   } 
    1600   mask = (1 << (power - minor_power)) - 1; 
    1601   while ((stepx * m_fScale) <= 32.0f) // text step x must be at least 32 
    1602     stepx *= 2; 
    1603   while ((stepy * m_fScale) <= 32.0f) // text step y must be at least 32 
    1604     stepy *= 2; 
    1605    
    1606  
    1607   glDisable(GL_TEXTURE_2D); 
    1608   glDisable(GL_TEXTURE_1D); 
    1609   glDisable(GL_DEPTH_TEST); 
    1610   glDisable(GL_BLEND); 
    1611   glLineWidth(1); 
    1612  
    1613   w = (m_nWidth / 2 / m_fScale); 
    1614   h = (m_nHeight / 2 / m_fScale); 
    1615  
    1616   int nDim1 = (m_viewType == YZ) ? 1 : 0; 
    1617   int nDim2 = (m_viewType == XY) ? 1 : 2; 
    1618  
    1619   xb = m_vOrigin[nDim1] - w; 
    1620   if (xb < region_mins[nDim1]) 
    1621     xb = region_mins[nDim1]; 
    1622   xb = step * floor (xb/step); 
    1623  
    1624   xe = m_vOrigin[nDim1] + w; 
    1625   if (xe > region_maxs[nDim1]) 
    1626     xe = region_maxs[nDim1]; 
    1627   xe = step * ceil (xe/step); 
    1628  
    1629   yb = m_vOrigin[nDim2] - h; 
    1630   if (yb < region_mins[nDim2]) 
    1631     yb = region_mins[nDim2]; 
    1632   yb = step * floor (yb/step); 
    1633  
    1634   ye = m_vOrigin[nDim2] + h; 
    1635   if (ye > region_maxs[nDim2]) 
    1636     ye = region_maxs[nDim2]; 
    1637   ye = step * ceil (ye/step); 
     1661void XYWnd::XY_DrawAxis(void) 
     1662
     1663        if ( g_xywindow_globals_private.show_axis) { 
     1664                const char g_AxisName[3] = { 'X', 'Y', 'Z' }; 
     1665                const int nDim1 = (m_viewType == YZ) ? 1 : 0; 
     1666                const int nDim2 = (m_viewType == XY) ? 1 : 2; 
     1667                const int w = (m_nWidth / 2 / m_fScale); 
     1668                const int h = (m_nHeight / 2 / m_fScale); 
     1669 
     1670                const Vector3& colourX = (m_viewType == YZ) ? g_xywindow_globals.AxisColorY : g_xywindow_globals.AxisColorX; 
     1671                const Vector3& colourY = (m_viewType == XY) ? g_xywindow_globals.AxisColorY : g_xywindow_globals.AxisColorZ; 
     1672 
     1673                // draw two lines with corresponding axis colors to highlight current view 
     1674                // horizontal line: nDim1 color 
     1675                glLineWidth(2); 
     1676                glBegin( GL_LINES ); 
     1677                glColor3fv (vector3_to_array(colourX)); 
     1678                glVertex2f( m_vOrigin[nDim1] - w + 40 / m_fScale, m_vOrigin[nDim2] + h - 45 / m_fScale ); 
     1679                glVertex2f( m_vOrigin[nDim1] - w + 65 / m_fScale, m_vOrigin[nDim2] + h - 45 / m_fScale ); 
     1680                glVertex2f( 0, 0 ); 
     1681                glVertex2f( 32 / m_fScale, 0 ); 
     1682                glColor3fv (vector3_to_array(colourY)); 
     1683                glVertex2f( m_vOrigin[nDim1] - w + 40 / m_fScale, m_vOrigin[nDim2] + h - 45 / m_fScale ); 
     1684                glVertex2f( m_vOrigin[nDim1] - w + 40 / m_fScale, m_vOrigin[nDim2] + h - 20 / m_fScale ); 
     1685                glVertex2f( 0, 0 ); 
     1686                glVertex2f( 0, 32 / m_fScale ); 
     1687                glEnd(); 
     1688                glLineWidth(1); 
     1689                // now print axis symbols 
     1690                glColor3fv (vector3_to_array(colourX)); 
     1691                glRasterPos2f ( m_vOrigin[nDim1] - w + 55 / m_fScale, m_vOrigin[nDim2] + h - 55 / m_fScale ); 
     1692                GlobalOpenGL().drawChar(g_AxisName[nDim1]); 
     1693                glRasterPos2f (28 / m_fScale, -10 / m_fScale ); 
     1694                GlobalOpenGL().drawChar(g_AxisName[nDim1]); 
     1695                glColor3fv (vector3_to_array(colourY)); 
     1696                glRasterPos2f ( m_vOrigin[nDim1] - w + 25 / m_fScale, m_vOrigin[nDim2] + h - 30 / m_fScale ); 
     1697                GlobalOpenGL().drawChar(g_AxisName[nDim2]); 
     1698                glRasterPos2f ( -10 / m_fScale, 28 / m_fScale ); 
     1699                GlobalOpenGL().drawChar(g_AxisName[nDim2]); 
     1700        } 
     1701
     1702 
     1703void XYWnd::XY_DrawBackground(void) 
     1704
     1705        glPushAttrib(GL_ALL_ATTRIB_BITS); 
     1706 
     1707        glEnable(GL_TEXTURE_2D); 
     1708        glEnable(GL_BLEND); 
     1709        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
     1710        glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 
     1711        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); 
     1712        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); 
     1713 
     1714        glPolygonMode(GL_FRONT, GL_FILL); 
     1715 
     1716        glBindTexture(GL_TEXTURE_2D, m_tex->texture_number); 
     1717        glBegin(GL_QUADS); 
     1718 
     1719        glColor4f(1.0, 1.0, 1.0, m_alpha); 
     1720        glTexCoord2f(0.0, 1.0); 
     1721        glVertex2f(m_xmin, m_ymin); 
     1722 
     1723        glTexCoord2f(1.0, 1.0); 
     1724        glVertex2f(m_xmax, m_ymin); 
     1725 
     1726        glTexCoord2f(1.0, 0.0); 
     1727        glVertex2f(m_xmax, m_ymax); 
     1728 
     1729        glTexCoord2f(0.0, 0.0); 
     1730        glVertex2f(m_xmin, m_ymax); 
     1731 
     1732        glEnd(); 
     1733        glBindTexture(GL_TEXTURE_2D, 0); 
     1734 
     1735        glPopAttrib(); 
     1736
     1737 
     1738void XYWnd::XY_DrawGrid(void) { 
     1739        float   x, y, xb, xe, yb, ye; 
     1740        float           w, h; 
     1741        char    text[32]; 
     1742        float step, minor_step, stepx, stepy; 
     1743        step = minor_step = stepx = stepy = GetGridSize(); 
     1744 
     1745        int minor_power = Grid_getPower(); 
     1746        int mask; 
     1747 
     1748        while ((minor_step * m_fScale) <= 4.0f) { // make sure minor grid spacing is at least 4 pixels on the screen 
     1749                ++minor_power; 
     1750                minor_step *= 2; 
     1751        } 
     1752        int power = minor_power; 
     1753        while ((power % 3) != 0 || (step * m_fScale) <= 32.0f) { // make sure major grid spacing is at least 32 pixels on the screen 
     1754                ++power; 
     1755                step = float(two_to_the_power(power)); 
     1756        } 
     1757        mask = (1 << (power - minor_power)) - 1; 
     1758        while ((stepx * m_fScale) <= 32.0f) // text step x must be at least 32 
     1759                stepx *= 2; 
     1760        while ((stepy * m_fScale) <= 32.0f) // text step y must be at least 32 
     1761                stepy *= 2; 
     1762 
     1763 
     1764        glDisable(GL_TEXTURE_2D); 
     1765        glDisable(GL_TEXTURE_1D); 
     1766        glDisable(GL_DEPTH_TEST); 
     1767        glDisable(GL_BLEND); 
     1768        glLineWidth(1); 
     1769 
     1770        w = (m_nWidth / 2 / m_fScale); 
     1771        h = (m_nHeight / 2 / m_fScale); 
     1772 
     1773        const int nDim1 = (m_viewType == YZ) ? 1 : 0; 
     1774        const int nDim2 = (m_viewType == XY) ? 1 : 2; 
     1775 
     1776        xb = m_vOrigin[nDim1] - w; 
     1777        if (xb < region_mins[nDim1]) 
     1778                xb = region_mins[nDim1]; 
     1779        xb = step * floor (xb / step); 
     1780 
     1781        xe = m_vOrigin[nDim1] + w; 
     1782        if (xe > region_maxs[nDim1]) 
     1783                xe = region_maxs[nDim1]; 
     1784        xe = step * ceil (xe / step); 
     1785 
     1786        yb = m_vOrigin[nDim2] - h; 
     1787        if (yb < region_mins[nDim2]) 
     1788                yb = region_mins[nDim2]; 
     1789        yb = step * floor (yb / step); 
     1790 
     1791        ye = m_vOrigin[nDim2] + h; 
     1792        if (ye > region_maxs[nDim2]) 
     1793                ye = region_maxs[nDim2]; 
     1794        ye = step * ceil (ye / step); 
    16381795 
    16391796#define COLORS_DIFFER(a,b) \ 
     
    16421799   (a)[2] != (b)[2]) 
    16431800 
    1644   // djbob 
    1645   // draw minor blocks 
    1646   if (g_xywindow_globals_private.d_showgrid) 
    1647   { 
    1648     if (COLORS_DIFFER(g_xywindow_globals.color_gridminor, g_xywindow_globals.color_gridback)) 
    1649     { 
    1650       glColor3fv(vector3_to_array(g_xywindow_globals.color_gridminor)); 
    1651  
    1652       glBegin (GL_LINES); 
    1653       int i = 0; 
    1654       for (x = xb ; x < xe ; x += minor_step, ++i) 
    1655       { 
    1656         if((i & mask) != 0) 
    1657         { 
    1658           glVertex2f (x, yb); 
    1659           glVertex2f (x, ye); 
    1660         } 
    1661       } 
    1662       i = 0; 
    1663       for (y = yb ; y < ye ; y += minor_step, ++i) 
    1664       { 
    1665         if((i & mask) != 0) 
    1666         { 
    1667           glVertex2f (xb, y); 
    1668           glVertex2f (xe, y); 
    1669         } 
    1670       } 
    1671       glEnd(); 
    1672     } 
    1673  
    1674     // draw major blocks 
    1675     if (COLORS_DIFFER(g_xywindow_globals.color_gridmajor, g_xywindow_globals.color_gridback)) 
    1676     { 
    1677       glColor3fv(vector3_to_array(g_xywindow_globals.color_gridmajor)); 
    1678  
    1679       glBegin (GL_LINES); 
    1680       for (x=xb ; x<=xe ; x+=step) 
    1681       { 
    1682         glVertex2f (x, yb); 
    1683         glVertex2f (x, ye); 
    1684       } 
    1685       for (y=yb ; y<=ye ; y+=step) 
    1686       { 
    1687         glVertex2f (xb, y); 
    1688         glVertex2f (xe, y); 
    1689       } 
    1690       glEnd(); 
    1691     } 
    1692   } 
    1693  
    1694   // draw coordinate text if needed 
    1695   if ( g_xywindow_globals_private.show_coordinates) 
    1696   { 
    1697     glColor3fv(vector3_to_array(g_xywindow_globals.color_gridtext)); 
     1801        // djbob 
     1802        // draw minor blocks 
     1803        if (g_xywindow_globals_private.d_showgrid) { 
     1804                if (COLORS_DIFFER(g_xywindow_globals.color_gridminor, g_xywindow_globals.color_gridback)) { 
     1805                        glColor3fv(vector3_to_array(g_xywindow_globals.color_gridminor)); 
     1806 
     1807                        glBegin (GL_LINES); 
     1808                        int i = 0; 
     1809                        for (x = xb ; x < xe ; x += minor_step, ++i) { 
     1810                                if ((i & mask) != 0) { 
     1811                                        glVertex2f (x, yb); 
     1812                                        glVertex2f (x, ye); 
     1813                                } 
     1814                        } 
     1815                        i = 0; 
     1816                        for (y = yb ; y < ye ; y += minor_step, ++i) { 
     1817                                if ((i & mask) != 0) { 
     1818                                        glVertex2f (xb, y); 
     1819                                        glVertex2f (xe, y); 
     1820                                } 
     1821                        } 
     1822                        glEnd(); 
     1823                } 
     1824 
     1825                // draw major blocks 
     1826                if (COLORS_DIFFER(g_xywindow_globals.color_gridmajor, g_xywindow_globals.color_gridback)) { 
     1827                        glColor3fv(vector3_to_array(g_xywindow_globals.color_gridmajor)); 
     1828 
     1829                        glBegin (GL_LINES); 
     1830                        for (x = xb ; x <= xe ; x += step) { 
     1831                                glVertex2f (x, yb); 
     1832                                glVertex2f (x, ye); 
     1833                        } 
     1834                        for (y = yb ; y <= ye ; y += step) { 
     1835                                glVertex2f (xb, y); 
     1836                                glVertex2f (xe, y); 
     1837                        } 
     1838                        glEnd(); 
     1839                } 
     1840        } 
     1841 
     1842        // draw coordinate text if needed 
     1843        if ( g_xywindow_globals_private.show_coordinates) { 
     1844                glColor3fv(vector3_to_array(g_xywindow_globals.color_gridtext)); 
    16981845                float offx = m_vOrigin[nDim2] + h - 6 / m_fScale, offy = m_vOrigin[nDim1] - w + 1 / m_fScale; 
    1699                 for (x = xb - fmod(xb, stepx); x <= xe ; x += stepx) 
    1700                 { 
    1701                   glRasterPos2f (x, offx); 
     1846                for (x = xb - fmod(xb, stepx); x <= xe ; x += stepx) { 
     1847                        glRasterPos2f (x, offx); 
    17021848                        sprintf (text, "%g", x); 
    17031849                        GlobalOpenGL().drawString(text); 
    17041850                } 
    1705                 for (y = yb - fmod(yb, stepy); y <= ye ; y += stepy) 
    1706                 { 
    1707                   glRasterPos2f (offy, y); 
     1851                for (y = yb - fmod(yb, stepy); y <= ye ; y += stepy) { 
     1852                        glRasterPos2f (offy, y); 
    17081853                        sprintf (text, "%g", y); 
    17091854                        GlobalOpenGL().drawString(text); 
    17101855                } 
    17111856 
    1712     if (Active()) 
    1713       glColor3fv(vector3_to_array(g_xywindow_globals.color_viewname)); 
    1714  
    1715     // we do this part (the old way) only if show_axis is disabled 
    1716     if (!g_xywindow_globals_private.show_axis) 
    1717     { 
    1718       glRasterPos2f ( m_vOrigin[nDim1] - w + 35 / m_fScale, m_vOrigin[nDim2] + h - 20 / m_fScale ); 
    1719  
    1720       GlobalOpenGL().drawString(ViewType_getTitle(m_viewType)); 
    1721     } 
    1722   } 
    1723  
    1724   if ( g_xywindow_globals_private.show_axis) 
    1725   { 
    1726     const char g_AxisName[3] = { 'X', 'Y', 'Z' }; 
    1727  
    1728     const Vector3& colourX = (m_viewType == YZ) ? g_xywindow_globals.AxisColorY : g_xywindow_globals.AxisColorX; 
    1729     const Vector3& colourY = (m_viewType == XY) ? g_xywindow_globals.AxisColorY : g_xywindow_globals.AxisColorZ; 
    1730  
    1731     // draw two lines with corresponding axis colors to highlight current view 
    1732     // horizontal line: nDim1 color 
    1733     glLineWidth(2); 
    1734     glBegin( GL_LINES ); 
    1735     glColor3fv (vector3_to_array(colourX)); 
    1736     glVertex2f( m_vOrigin[nDim1] - w + 40 / m_fScale, m_vOrigin[nDim2] + h - 45 / m_fScale ); 
    1737     glVertex2f( m_vOrigin[nDim1] - w + 65 / m_fScale, m_vOrigin[nDim2] + h - 45 / m_fScale ); 
    1738     glVertex2f( 0, 0 ); 
    1739     glVertex2f( 32 / m_fScale, 0 ); 
    1740     glColor3fv (vector3_to_array(colourY)); 
    1741     glVertex2f( m_vOrigin[nDim1] - w + 40 / m_fScale, m_vOrigin[nDim2] + h - 45 / m_fScale ); 
    1742     glVertex2f( m_vOrigin[nDim1] - w + 40 / m_fScale, m_vOrigin[nDim2] + h - 20 / m_fScale ); 
    1743     glVertex2f( 0, 0 ); 
    1744     glVertex2f( 0, 32 / m_fScale ); 
    1745     glEnd(); 
    1746     glLineWidth(1); 
    1747     // now print axis symbols 
    1748     glColor3fv (vector3_to_array(colourX)); 
    1749     glRasterPos2f ( m_vOrigin[nDim1] - w + 55 / m_fScale, m_vOrigin[nDim2] + h - 55 / m_fScale ); 
    1750     GlobalOpenGL().drawChar(g_AxisName[nDim1]); 
    1751     glRasterPos2f (28 / m_fScale, -10 / m_fScale ); 
    1752     GlobalOpenGL().drawChar(g_AxisName[nDim1]); 
    1753     glColor3fv (vector3_to_array(colourY)); 
    1754     glRasterPos2f ( m_vOrigin[nDim1] - w + 25 / m_fScale, m_vOrigin[nDim2] + h - 30 / m_fScale ); 
    1755     GlobalOpenGL().drawChar(g_AxisName[nDim2]); 
    1756     glRasterPos2f ( -10 / m_fScale, 28 / m_fScale ); 
    1757     GlobalOpenGL().drawChar(g_AxisName[nDim2]); 
    1758  
    1759   } 
    1760  
    1761   // show current work zone? 
    1762   // the work zone is used to place dropped points and brushes 
    1763   if (g_xywindow_globals_private.d_show_work) 
    1764   { 
    1765     glColor3f( 1.0f, 0.0f, 0.0f ); 
    1766     glBegin( GL_LINES ); 
    1767     glVertex2f( xb, Select_getWorkZone().d_work_min[nDim2] ); 
    1768     glVertex2f( xe, Select_getWorkZone().d_work_min[nDim2] ); 
    1769     glVertex2f( xb, Select_getWorkZone().d_work_max[nDim2] ); 
    1770     glVertex2f( xe, Select_getWorkZone().d_work_max[nDim2] ); 
    1771     glVertex2f( Select_getWorkZone().d_work_min[nDim1], yb ); 
    1772     glVertex2f( Select_getWorkZone().d_work_min[nDim1], ye ); 
    1773     glVertex2f( Select_getWorkZone().d_work_max[nDim1], yb ); 
    1774     glVertex2f( Select_getWorkZone().d_work_max[nDim1], ye ); 
    1775     glEnd(); 
    1776   } 
     1857                if (Active()) 
     1858                        glColor3fv(vector3_to_array(g_xywindow_globals.color_viewname)); 
     1859 
     1860                // we do this part (the old way) only if show_axis is disabled 
     1861                if (!g_xywindow_globals_private.show_axis) { 
     1862                        glRasterPos2f ( m_vOrigin[nDim1] - w + 35 / m_fScale, m_vOrigin[nDim2] + h - 20 / m_fScale ); 
     1863 
     1864                        GlobalOpenGL().drawString(ViewType_getTitle(m_viewType)); 
     1865                } 
     1866        } 
     1867 
     1868        XYWnd::XY_DrawAxis(); 
     1869 
     1870        // show current work zone? 
     1871        // the work zone is used to place dropped points and brushes 
     1872        if (g_xywindow_globals_private.d_show_work) { 
     1873                glColor3f( 1.0f, 0.0f, 0.0f ); 
     1874                glBegin( GL_LINES ); 
     1875                glVertex2f( xb, Select_getWorkZone().d_work_min[nDim2] ); 
     1876                glVertex2f( xe, Select_getWorkZone().d_work_min[nDim2] ); 
     1877                glVertex2f( xb, Select_getWorkZone().d_work_max[nDim2] ); 
     1878                glVertex2f( xe, Select_getWorkZone().d_work_max[nDim2] ); 
     1879                glVertex2f( Select_getWorkZone().d_work_min[nDim1], yb ); 
     1880                glVertex2f( Select_getWorkZone().d_work_min[nDim1], ye ); 
     1881                glVertex2f( Select_getWorkZone().d_work_max[nDim1], yb ); 
     1882                glVertex2f( Select_getWorkZone().d_work_max[nDim1], ye ); 
     1883                glEnd(); 
     1884        } 
    17771885} 
    17781886 
     
    18371945 
    18381946  glBegin (GL_LINES); 
    1839          
     1947 
    18401948  for (x=xb ; x<=xe ; x+=g_xywindow_globals_private.blockSize) 
    18411949  { 
     
    18521960        } 
    18531961  } 
    1854          
     1962 
    18551963  glEnd(); 
    18561964  glLineWidth (1); 
     
    19082016  glVertex3f (x+box,y,0); 
    19092017  glEnd(); 
    1910          
     2018 
    19112019  glBegin(GL_LINE_STRIP); 
    19122020  glVertex3f (x + static_cast<float>(fov*cos(a+c_pi/4)), y + static_cast<float>(fov*sin(a+c_pi/4)), 0); 
     
    19272035 
    19282036 
    1929 // can be greatly simplified but per usual i am in a hurry  
     2037// can be greatly simplified but per usual i am in a hurry 
    19302038// which is not an excuse, just a fact 
    19312039void XYWnd::PaintSizeInfo(int nDim1, int nDim2, Vector3& vMinBounds, Vector3& vMaxBounds) 
     
    19412049  Vector3 vSize(vector3_subtracted(vMaxBounds, vMinBounds)); 
    19422050 
    1943   glColor3f(g_xywindow_globals.color_selbrushes[0] * .65f,  
     2051  glColor3f(g_xywindow_globals.color_selbrushes[0] * .65f, 
    19442052             g_xywindow_globals.color_selbrushes[1] * .65f, 
    19452053             g_xywindow_globals.color_selbrushes[2] * .65f); 
     
    19592067    glVertex3f(vMaxBounds[nDim1], vMinBounds[nDim2] - 6.0f  / m_fScale, 0.0f); 
    19602068    glVertex3f(vMaxBounds[nDim1], vMinBounds[nDim2] - 10.0f / m_fScale, 0.0f); 
    1961    
     2069 
    19622070 
    19632071    glVertex3f(vMaxBounds[nDim1] + 6.0f  / m_fScale, vMinBounds[nDim2], 0.0f); 
     
    19662074    glVertex3f(vMaxBounds[nDim1] + 10.0f  / m_fScale, vMinBounds[nDim2], 0.0f); 
    19672075    glVertex3f(vMaxBounds[nDim1] + 10.0f  / m_fScale, vMaxBounds[nDim2], 0.0f); 
    1968    
     2076 
    19692077    glVertex3f(vMaxBounds[nDim1] + 6.0f  / m_fScale, vMaxBounds[nDim2], 0.0f); 
    19702078    glVertex3f(vMaxBounds[nDim1] + 10.0f  / m_fScale, vMaxBounds[nDim2], 0.0f); 
     
    19762084    GlobalOpenGL().drawString(dimensions.c_str()); 
    19772085    dimensions.clear(); 
    1978      
     2086 
    19792087    glRasterPos3f (vMaxBounds[nDim1] + 16.0f  / m_fScale, Betwixt(vMinBounds[nDim2], vMaxBounds[nDim2]), 0.0f); 
    19802088    dimensions << g_pDimStrings[nDim2] << vSize[nDim2]; 
     
    19982106    glVertex3f(vMaxBounds[nDim1], 0,vMinBounds[nDim2] - 6.0f  / m_fScale); 
    19992107    glVertex3f(vMaxBounds[nDim1], 0,vMinBounds[nDim2] - 10.0f / m_fScale); 
    2000    
     2108 
    20012109 
    20022110    glVertex3f(vMaxBounds[nDim1] + 6.0f  / m_fScale, 0,vMinBounds[nDim2]); 
     
    20052113    glVertex3f(vMaxBounds[nDim1] + 10.0f  / m_fScale, 0,vMinBounds[nDim2]); 
    20062114    glVertex3f(vMaxBounds[nDim1] + 10.0f  / m_fScale, 0,vMaxBounds[nDim2]); 
    2007    
     2115 
    20082116    glVertex3f(vMaxBounds[nDim1] + 6.0f  / m_fScale, 0,vMaxBounds[nDim2]); 
    20092117    glVertex3f(vMaxBounds[nDim1] + 10.0f  / m_fScale, 0,vMaxBounds[nDim2]); 
     
    20152123    GlobalOpenGL().drawString(dimensions.c_str()); 
    20162124    dimensions.clear(); 
    2017      
     2125 
    20182126    glRasterPos3f (vMaxBounds[nDim1] + 16.0f  / m_fScale, 0, Betwixt(vMinBounds[nDim2], vMaxBounds[nDim2])); 
    20192127    dimensions << g_pDimStrings[nDim2] << vSize[nDim2]; 
     
    20372145    glVertex3f(0, vMaxBounds[nDim1], vMinBounds[nDim2] - 6.0f  / m_fScale); 
    20382146    glVertex3f(0, vMaxBounds[nDim1], vMinBounds[nDim2] - 10.0f / m_fScale); 
    2039    
     2147 
    20402148 
    20412149    glVertex3f(0, vMaxBounds[nDim1] + 6.0f  / m_fScale, vMinBounds[nDim2]); 
     
    20442152    glVertex3f(0, vMaxBounds[nDim1] + 10.0f  / m_fScale, vMinBounds[nDim2]); 
    20452153    glVertex3f(0, vMaxBounds[nDim1] + 10.0f  / m_fScale, vMaxBounds[nDim2]); 
    2046    
     2154 
    20472155    glVertex3f(0, vMaxBounds[nDim1] + 6.0f  / m_fScale, vMaxBounds[nDim2]); 
    20482156    glVertex3f(0, vMaxBounds[nDim1] + 10.0f  / m_fScale, vMaxBounds[nDim2]); 
     
    20542162    GlobalOpenGL().drawString(dimensions.c_str()); 
    20552163    dimensions.clear(); 
    2056      
     2164 
    20572165    glRasterPos3f (0, vMaxBounds[nDim1] + 16.0f  / m_fScale, Betwixt(vMinBounds[nDim2], vMaxBounds[nDim2])); 
    20582166    dimensions << g_pDimStrings[nDim2] << vSize[nDim2]; 
     
    20742182    m_state(0) 
    20752183    { 
    2076     }   
     2184    } 
    20772185    unsigned int m_highlight; 
    20782186    Shader* m_state; 
     
    22662374  glDisable(GL_DEPTH_TEST); 
    22672375 
     2376  if (m_backgroundActivated) 
     2377    XY_DrawBackground(); 
    22682378  XY_DrawGrid(); 
     2379 
    22692380  if ( g_xywindow_globals_private.show_blocks) 
    22702381    XY_DrawBlockGrid(); 
     
    22932404 
    22942405  glLoadMatrixf(reinterpret_cast<const float*>(&m_modelview)); 
    2295    
     2406 
    22962407  GlobalOpenGL_debugAssertNoErrors(); 
    22972408  glDisable(GL_LINE_STIPPLE); 
     
    23622473 
    23632474  GlobalOpenGL_debugAssertNoErrors(); 
    2364      
     2475 
    23652476    // reset modelview 
    23662477  glLoadIdentity(); 
     
    25302641void ToggleShowCrosshair() 
    25312642{ 
    2532   g_bCrossHairs ^= 1;  
     2643  g_bCrossHairs ^= 1; 
    25332644  XY_UpdateAllWindows(); 
    25342645} 
  • GtkRadiant/branches/1.5/radiant/xywindow.h

    r58 r315  
    3131#include "view.h" 
    3232#include "map.h" 
     33#include "texturelib.h" 
    3334 
    3435#include "qerplugin.h" 
     
    105106  void DrawCameraIcon(const Vector3& origin, const Vector3& angles); 
    106107  void XY_DrawBlockGrid(); 
     108  void XY_DrawAxis(); 
    107109  void XY_DrawGrid(); 
     110  void XY_DrawBackground(); 
     111  void XY_LoadBackgroundImage(const char *name); 
     112  void XY_DisableBackground(); 
    108113 
    109114  void XY_MouseUp(int x, int y, unsigned int buttons); 
     
    150155  int m_chasemouse_current_x, m_chasemouse_current_y; 
    151156  int m_chasemouse_delta_x, m_chasemouse_delta_y; 
    152    
     157 
    153158 
    154159  guint m_chasemouse_handler; 
     
    163168  int m_nWidth; 
    164169  int m_nHeight; 
     170  // background image stuff 
     171  qtexture_t *m_tex; 
     172  bool m_backgroundActivated; 
     173  float m_alpha; // vertex alpha 
     174  float m_xmin, m_ymin, m_xmax, m_ymax; 
    165175private: 
    166176  float m_fScale; 
     
    297307void XYWindow_Destroy(); 
    298308 
     309void WXY_Print(); 
     310void WXY_BackgroundSelect(); 
     311 
    299312void XYShow_registerCommands(); 
    300313void XYWnd_registerShortcuts();