home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 275 / DPCS0111DVD.ISO / Toolkit / Audio-Visual / VirtualDub / Source / VirtualDub-1.9.10-src.7z / src / Dita / source / w32group.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2009-09-14  |  2.5 KB  |  81 lines

  1. //    VirtualDub - Video processing and capture application
  2. //    Copyright (C) 1998-2004 Avery Lee
  3. //
  4. //    This program is free software; you can redistribute it and/or modify
  5. //    it under the terms of the GNU General Public License as published by
  6. //    the Free Software Foundation; either version 2 of the License, or
  7. //    (at your option) any later version.
  8. //
  9. //    This program is distributed in the hope that it will be useful,
  10. //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. //    GNU General Public License for more details.
  13. //
  14. //    You should have received a copy of the GNU General Public License
  15. //    along with this program; if not, write to the Free Software
  16. //    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  
  18. #include <stdafx.h>
  19. #include <vd2/Dita/w32control.h>
  20.  
  21. class VDUIGroupW32 : public VDUIControlW32 {
  22. public:
  23.     bool Create(IVDUIParameters *);
  24.     void PreLayoutBase(const VDUILayoutSpecs&);
  25.     void PostLayoutBase(const vduirect& target);
  26. };
  27.  
  28. extern IVDUIWindow *VDCreateUIGroup() { return new VDUIGroupW32; }
  29.  
  30. bool VDUIGroupW32::Create(IVDUIParameters *pParameters) {
  31.     return CreateW32(pParameters, "BUTTON", BS_GROUPBOX);
  32. }
  33.  
  34. void VDUIGroupW32::PreLayoutBase(const VDUILayoutSpecs& parentConstraints) {
  35.        vduirect r = mpBase->MapUnitsToPixels(vduirect(0,6,6,12));
  36.     SIZE siz = SizeText(0, 0, 0);
  37.  
  38.     mLayoutSpecs.minsize.w    = siz.cx;
  39.     mLayoutSpecs.minsize.h    = siz.cy;
  40.    
  41.        r.right += r.right;
  42.    
  43.        mLayoutSpecs.minsize.w    = r.right;
  44.        mLayoutSpecs.minsize.h    = r.top + r.bottom;
  45.    
  46.        VDUILayoutSpecs ls;
  47.  
  48.        ls.minsize.w = parentConstraints.minsize.w - mLayoutSpecs.minsize.w;
  49.        ls.minsize.h = parentConstraints.minsize.h - mLayoutSpecs.minsize.h;
  50.  
  51.     vduisize childsize(0, 0);
  52.  
  53.     tChildren::iterator it(mChildren.begin()), itEnd(mChildren.end());
  54.     for(; it!=itEnd; ++it) {
  55.         IVDUIWindow *pWin = *it;
  56.  
  57.         pWin->PreLayout(ls);
  58.  
  59.         childsize.include(pWin->GetLayoutSpecs().minsize);
  60.     }
  61.  
  62.     childsize.include(vduisize(siz.cx, siz.cy));
  63.  
  64.        mLayoutSpecs.minsize += childsize;
  65. }
  66.  
  67. void VDUIGroupW32::PostLayoutBase(const vduirect& target) {
  68.     SetArea(target);
  69.  
  70.     vduirect r = mpBase->MapUnitsToPixels(vduirect(0,6,6,12));
  71.  
  72.     vduirect rDest(target.left + r.right, target.top + r.bottom, target.right - r.right, target.bottom - r.top);
  73.  
  74.     tChildren::iterator it(mChildren.begin()), itEnd(mChildren.end());
  75.     for(; it!=itEnd; ++it) {
  76.         IVDUIWindow *pWin = *it;
  77.  
  78.         pWin->PostLayout(rDest);
  79.     }
  80. }
  81.