public static void Initialize(ref IntPtr measurePtr, IntPtr apiPtr) { RainmeterAPI api = new RainmeterAPI(apiPtr); RainmeterSkinHandler skinHandler = RainmeterSkinHandler.GetSkinHandler(api); skinHandler.M_Initialize(ref measurePtr, api); RainmeterSkinHandler.AddMeasurePtr(measurePtr, skinHandler); }
internal static void AddMeasurePtr(IntPtr measurePtr, RainmeterSkinHandler skinHandler) { if (measurePtr == IntPtr.Zero) { return; } SkinHandlerByMeasurePtr.Add(measurePtr, skinHandler); }
public PluginSkin(RainmeterSkinHandler skinHandler, RainmeterAPI api) { SkinHandler = skinHandler; // -- We need to remove the last directory from path. var path = api.ReadPath(RainmeterSkinHandler.PluginMeasureName, string.Empty); var dir = Directory.GetParent(path.EndsWith("\\") ? path : string.Concat(path, "\\")); Path = dir.Parent.FullName; }
internal static RainmeterSkinHandler GetSkinHandler(RainmeterAPI api) { IntPtr skinPtr = api.GetSkin(); RainmeterSkinHandler skinHandler; if (!SkinHandlerBySkinPtr.TryGetValue(skinPtr, out skinHandler)) { SkinHandlerBySkinPtr.Add(skinPtr, (skinHandler = new RainmeterSkinHandler(skinPtr, api.GetSkinName(), api.GetSkinWindow()))); } return(skinHandler); }
public static void Finalize(IntPtr measurePtr) { RainmeterSkinHandler skinHandler = RainmeterSkinHandler.GetSkinHandlerByMeasurePtr(measurePtr); skinHandler.M_Finalize(measurePtr); if (measurePtr != IntPtr.Zero) { GCHandle.FromIntPtr(measurePtr).Free(); } RainmeterSkinHandler.RemoveMeasurePtr(measurePtr); if (StringBuffer != IntPtr.Zero) { Marshal.FreeHGlobal(StringBuffer); StringBuffer = IntPtr.Zero; } }
public static IntPtr GetString(IntPtr measurePtr) { RainmeterSkinHandler skinHandler = RainmeterSkinHandler.GetSkinHandlerByMeasurePtr(measurePtr); if (StringBuffer != IntPtr.Zero) { Marshal.FreeHGlobal(StringBuffer); StringBuffer = IntPtr.Zero; } string stringValue = skinHandler.M_GetString(measurePtr); if (stringValue != null) { StringBuffer = Marshal.StringToHGlobalUni(stringValue); } return(StringBuffer); }
public static void ExecuteBang(IntPtr measurePtr, IntPtr argsPtr) { RainmeterSkinHandler skinHandler = RainmeterSkinHandler.GetSkinHandlerByMeasurePtr(measurePtr); skinHandler.M_ExecuteBang(measurePtr, Marshal.PtrToStringUni(argsPtr)); }
public static double Update(IntPtr measurePtr) { RainmeterSkinHandler skinHandler = RainmeterSkinHandler.GetSkinHandlerByMeasurePtr(measurePtr); return(skinHandler.M_GetNumeric(measurePtr)); }
public static void Reload(IntPtr measurePtr, IntPtr apiPtr, ref double maxValue) { RainmeterSkinHandler skinHandler = RainmeterSkinHandler.GetSkinHandlerByMeasurePtr(measurePtr); skinHandler.M_Reload(measurePtr, new RainmeterAPI(apiPtr), ref maxValue); }
// -- Add Base-Derived class support. private static PluginSkin CreatePluginSkin(Assembly assembly, string measureType, RainmeterSkinHandler skinHandler, RainmeterAPI api) => (PluginSkin)Activator.CreateInstance(GetPluginSkinType(assembly, measureType), new object[] { skinHandler, api });