ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

property.c
Go to the documentation of this file.
00001 /*
00002  * Win32 5.1 Theme properties
00003  *
00004  * Copyright (C) 2003 Kevin Koltzau
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU Lesser General Public
00008  * License as published by the Free Software Foundation; either
00009  * version 2.1 of the License, or (at your option) any later version.
00010  *
00011  * This library is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  * Lesser General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU Lesser General Public
00017  * License along with this library; if not, write to the Free Software
00018  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00019  */
00020 
00021 #include "uxthemep.h"
00022 #include "wine/debug.h"
00023 
00024 WINE_DEFAULT_DEBUG_CHANNEL(uxtheme);
00025 
00026 /***********************************************************************
00027  *      GetThemeBool                                        (UXTHEME.@)
00028  */
00029 HRESULT WINAPI GetThemeBool(HTHEME hTheme, int iPartId, int iStateId,
00030                             int iPropId, BOOL *pfVal)
00031 {
00032     PTHEME_PROPERTY tp;
00033 
00034     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00035     if(!hTheme)
00036         return E_HANDLE;
00037 
00038     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_BOOL, iPropId)))
00039         return E_PROP_ID_UNSUPPORTED;
00040     return MSSTYLES_GetPropertyBool(tp, pfVal);
00041 }
00042 
00043 /***********************************************************************
00044  *      GetThemeColor                                       (UXTHEME.@)
00045  */
00046 HRESULT WINAPI GetThemeColor(HTHEME hTheme, int iPartId, int iStateId,
00047                              int iPropId, COLORREF *pColor)
00048 {
00049     PTHEME_PROPERTY tp;
00050 
00051     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00052     if(!hTheme)
00053         return E_HANDLE;
00054 
00055     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_COLOR, iPropId)))
00056         return E_PROP_ID_UNSUPPORTED;
00057     return MSSTYLES_GetPropertyColor(tp, pColor);
00058 }
00059 
00060 /***********************************************************************
00061  *      GetThemeEnumValue                                   (UXTHEME.@)
00062  */
00063 HRESULT WINAPI GetThemeEnumValue(HTHEME hTheme, int iPartId, int iStateId,
00064                                  int iPropId, int *piVal)
00065 {
00066     HRESULT hr;
00067     WCHAR val[60];
00068     PTHEME_PROPERTY tp;
00069 
00070     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00071     if(!hTheme)
00072         return E_HANDLE;
00073 
00074     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_ENUM, iPropId)))
00075         return E_PROP_ID_UNSUPPORTED;
00076 
00077     hr = MSSTYLES_GetPropertyString(tp, val, sizeof(val)/sizeof(val[0]));
00078     if(FAILED(hr))
00079         return hr;
00080     if(!MSSTYLES_LookupEnum(val, iPropId, piVal))
00081         return E_PROP_ID_UNSUPPORTED;
00082     return S_OK;
00083 }
00084 
00085 /***********************************************************************
00086  *      GetThemeFilename                                    (UXTHEME.@)
00087  */
00088 HRESULT WINAPI GetThemeFilename(HTHEME hTheme, int iPartId, int iStateId,
00089                                 int iPropId, LPWSTR pszThemeFilename,
00090                                 int cchMaxBuffChars)
00091 {
00092     PTHEME_PROPERTY tp;
00093 
00094     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00095     if(!hTheme)
00096         return E_HANDLE;
00097 
00098     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_FILENAME, iPropId)))
00099         return E_PROP_ID_UNSUPPORTED;
00100     return MSSTYLES_GetPropertyString(tp, pszThemeFilename, cchMaxBuffChars);
00101 }
00102 
00103 /***********************************************************************
00104  *      GetThemeFont                                        (UXTHEME.@)
00105  */
00106 HRESULT WINAPI GetThemeFont(HTHEME hTheme, HDC hdc, int iPartId,
00107                             int iStateId, int iPropId, LOGFONTW *pFont)
00108 {
00109     PTHEME_PROPERTY tp;
00110 
00111     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00112     if(!hTheme)
00113         return E_HANDLE;
00114 
00115     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_FONT, iPropId)))
00116         return E_PROP_ID_UNSUPPORTED;
00117     return MSSTYLES_GetPropertyFont(tp, hdc, pFont);
00118 }
00119 
00120 /***********************************************************************
00121  *      GetThemeInt                                         (UXTHEME.@)
00122  */
00123 HRESULT WINAPI GetThemeInt(HTHEME hTheme, int iPartId, int iStateId,
00124                            int iPropId, int *piVal)
00125 {
00126     PTHEME_PROPERTY tp;
00127 
00128     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00129     if(!hTheme)
00130         return E_HANDLE;
00131 
00132     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_INT, iPropId)))
00133         return E_PROP_ID_UNSUPPORTED;
00134     return MSSTYLES_GetPropertyInt(tp, piVal);
00135 }
00136 
00137 /***********************************************************************
00138  *      GetThemeIntList                                     (UXTHEME.@)
00139  */
00140 HRESULT WINAPI GetThemeIntList(HTHEME hTheme, int iPartId, int iStateId,
00141                                int iPropId, INTLIST *pIntList)
00142 {
00143     PTHEME_PROPERTY tp;
00144 
00145     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00146     if(!hTheme)
00147         return E_HANDLE;
00148 
00149     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_INTLIST, iPropId)))
00150         return E_PROP_ID_UNSUPPORTED;
00151     return MSSTYLES_GetPropertyIntList(tp, pIntList);
00152 }
00153 
00154 /***********************************************************************
00155  *      GetThemePosition                                    (UXTHEME.@)
00156  */
00157 HRESULT WINAPI GetThemePosition(HTHEME hTheme, int iPartId, int iStateId,
00158                                 int iPropId, POINT *pPoint)
00159 {
00160     PTHEME_PROPERTY tp;
00161 
00162     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00163     if(!hTheme)
00164         return E_HANDLE;
00165 
00166     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_POSITION, iPropId)))
00167         return E_PROP_ID_UNSUPPORTED;
00168     return MSSTYLES_GetPropertyPosition(tp, pPoint);
00169 }
00170 
00171 /***********************************************************************
00172  *      GetThemeRect                                        (UXTHEME.@)
00173  */
00174 HRESULT WINAPI GetThemeRect(HTHEME hTheme, int iPartId, int iStateId,
00175                             int iPropId, RECT *pRect)
00176 {
00177     PTHEME_PROPERTY tp;
00178 
00179     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00180     if(!hTheme)
00181         return E_HANDLE;
00182 
00183     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_RECT, iPropId)))
00184         return E_PROP_ID_UNSUPPORTED;
00185     return MSSTYLES_GetPropertyRect(tp, pRect);
00186 }
00187 
00188 /***********************************************************************
00189  *      GetThemeString                                      (UXTHEME.@)
00190  */
00191 HRESULT WINAPI GetThemeString(HTHEME hTheme, int iPartId, int iStateId,
00192                               int iPropId, LPWSTR pszBuff, int cchMaxBuffChars)
00193 {
00194     PTHEME_PROPERTY tp;
00195 
00196     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00197     if(!hTheme)
00198         return E_HANDLE;
00199 
00200     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_FILENAME, iPropId)))
00201         return E_PROP_ID_UNSUPPORTED;
00202     return MSSTYLES_GetPropertyString(tp, pszBuff, cchMaxBuffChars);
00203 }
00204 
00205 /***********************************************************************
00206  *      GetThemeMargins                                     (UXTHEME.@)
00207  */
00208 HRESULT WINAPI GetThemeMargins(HTHEME hTheme, HDC hdc, int iPartId,
00209                                int iStateId, int iPropId, RECT *prc,
00210                                MARGINS *pMargins)
00211 {
00212     PTHEME_PROPERTY tp;
00213 
00214     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00215     memset (pMargins, 0, sizeof (MARGINS));
00216     if(!hTheme)
00217         return E_HANDLE;
00218 
00219     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_MARGINS, iPropId)))
00220         return E_PROP_ID_UNSUPPORTED;
00221     return MSSTYLES_GetPropertyMargins(tp, prc, pMargins);
00222 }
00223 
00224 /***********************************************************************
00225  *      GetThemeMetric                                      (UXTHEME.@)
00226  */
00227 HRESULT WINAPI GetThemeMetric(HTHEME hTheme, HDC hdc, int iPartId,
00228                               int iStateId, int iPropId, int *piVal)
00229 {
00230     PTHEME_PROPERTY tp;
00231     WCHAR val[60];
00232     HRESULT hr;
00233 
00234     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00235     if(!hTheme)
00236         return E_HANDLE;
00237 
00238     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, 0, iPropId)))
00239         return E_PROP_ID_UNSUPPORTED;
00240     switch(tp->iPrimitiveType) {
00241         case TMT_POSITION: /* Only the X coord is retrieved */
00242         case TMT_MARGINS: /* Only the cxLeftWidth member is retrieved */
00243         case TMT_INTLIST: /* Only the first int is retrieved */
00244         case TMT_SIZE:
00245         case TMT_INT:
00246             return MSSTYLES_GetPropertyInt(tp, piVal);
00247         case TMT_BOOL:
00248             return MSSTYLES_GetPropertyBool(tp, piVal);
00249         case TMT_COLOR:
00250             return MSSTYLES_GetPropertyColor(tp, (COLORREF*)piVal);
00251         case TMT_ENUM:
00252             hr = MSSTYLES_GetPropertyString(tp, val, sizeof(val)/sizeof(val[0]));
00253             if(FAILED(hr))
00254                 return hr;
00255             if(!MSSTYLES_LookupEnum(val, iPropId, piVal))
00256                 return E_PROP_ID_UNSUPPORTED;
00257             return S_OK;
00258          case TMT_FILENAME:
00259              /* Windows does return a value for this, but its value doesn't make sense */
00260              FIXME("Filename\n");
00261              break;
00262     }
00263     return E_PROP_ID_UNSUPPORTED;
00264 }
00265 
00266 /***********************************************************************
00267  *      GetThemePropertyOrigin                              (UXTHEME.@)
00268  */
00269 HRESULT WINAPI GetThemePropertyOrigin(HTHEME hTheme, int iPartId, int iStateId,
00270                                       int iPropId, PROPERTYORIGIN *pOrigin)
00271 {
00272     PTHEME_PROPERTY tp;
00273 
00274     TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId);
00275     if(!hTheme)
00276         return E_HANDLE;
00277 
00278     if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, 0, iPropId))) {
00279         *pOrigin = PO_NOTFOUND;
00280         return S_OK;
00281     }
00282     *pOrigin = tp->origin;
00283     return S_OK;
00284 }

Generated on Sun May 27 2012 04:21:44 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.