Annotation of researchv9/X11/src/X.V11R1/server/ddx/mfb/mfbscrinit.c, revision 1.1.1.1

1.1       root        1: /***********************************************************
                      2: Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
                      3: and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
                      4: 
                      5:                         All Rights Reserved
                      6: 
                      7: Permission to use, copy, modify, and distribute this software and its 
                      8: documentation for any purpose and without fee is hereby granted, 
                      9: provided that the above copyright notice appear in all copies and that
                     10: both that copyright notice and this permission notice appear in 
                     11: supporting documentation, and that the names of Digital or MIT not be
                     12: used in advertising or publicity pertaining to distribution of the
                     13: software without specific, written prior permission.  
                     14: 
                     15: DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
                     16: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
                     17: DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
                     18: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
                     19: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
                     20: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
                     21: SOFTWARE.
                     22: 
                     23: ******************************************************************/
                     24: /* $Header: mfbscrinit.c,v 1.52 87/09/07 19:08:52 toddb Exp $ */
                     25: 
                     26: #include "X.h"
                     27: #include "Xproto.h"    /* for xColorItem */
                     28: #include "Xmd.h"
                     29: #include "scrnintstr.h"
                     30: #include "pixmapstr.h"
                     31: #include "resource.h"
                     32: #include "colormap.h"
                     33: #include "mfb.h"
                     34: #include "mistruct.h"
                     35: #include "dix.h"
                     36: 
                     37: #include "servermd.h"
                     38: 
                     39: static void
                     40: mfbFreeVisual(p, id)
                     41:     pointer p;
                     42:     int id;
                     43: {
                     44:     Xfree(p);
                     45: }
                     46: 
                     47: /* dts * (inch/dot) * (25.4 mm / inch) = mm */
                     48: Bool
                     49: mfbScreenInit(index, pScreen, pbits, xsize, ysize, dpix, dpiy)
                     50:     int index;
                     51:     register ScreenPtr pScreen;
                     52:     pointer pbits;             /* pointer to screen bitmap */
                     53:     int xsize, ysize;          /* in pixels */
                     54:     int dpix, dpiy;            /* dots per inch */
                     55: {
                     56:     DepthPtr   pDepth;
                     57:     VisualPtr  pVisual;
                     58:     long       *pVids;
                     59:     register PixmapPtr pPixmap;
                     60: 
                     61:     pScreen->myNum = index;
                     62:     pScreen->width = xsize;
                     63:     pScreen->height = ysize;
                     64:     pScreen->mmWidth = (xsize * 254) / (dpix * 10);
                     65:     pScreen->mmHeight = (ysize * 254) / (dpiy * 10);
                     66:     pScreen->numDepths = 1;
                     67:     pScreen->allowedDepths = pDepth = (DepthPtr) Xalloc(sizeof(DepthRec));
                     68: 
                     69:     pScreen->rootDepth = 1;
                     70:     pScreen->rootVisual = FakeClientID(0);
                     71:     pScreen->defColormap = (Colormap) FakeClientID(0);
                     72:     pScreen->minInstalledCmaps = 1;
                     73:     pScreen->maxInstalledCmaps = 1;
                     74:     pScreen->whitePixel = 1;
                     75:     pScreen->blackPixel = 0;
                     76:     pScreen->backingStoreSupport = NotUseful;
                     77:     pScreen->saveUnderSupport = NotUseful;
                     78: 
                     79:     /* cursmin and cursmax are device specific */
                     80: 
                     81:     pScreen->numVisuals = 1;
                     82:     pScreen->visuals = pVisual = (VisualPtr) Xalloc(sizeof (VisualRec));
                     83: 
                     84:     pPixmap = (PixmapPtr )Xalloc(sizeof(PixmapRec));
                     85:     pPixmap->drawable.type = DRAWABLE_PIXMAP;
                     86:     pPixmap->drawable.depth = 1;
                     87:     pPixmap->drawable.pScreen = pScreen;
                     88:     pPixmap->drawable.serialNumber = 0;
                     89:     pPixmap->width = xsize;
                     90:     pPixmap->height = ysize;
                     91:     pPixmap->refcnt = 1;
                     92:     pPixmap->devPrivate = pbits;
                     93:     pPixmap->devKind = PixmapBytePad(xsize, 1);
                     94:     pScreen->devPrivate = (pointer)pPixmap;
                     95: 
                     96:     /* anything that mfb doesn't know about is assumed to be done
                     97:        elsewhere.  (we put in no-op only for things that we KNOW
                     98:        are really no-op.
                     99:     */
                    100:     pScreen->CreateWindow = mfbCreateWindow;
                    101:     pScreen->DestroyWindow = mfbDestroyWindow;
                    102:     pScreen->PositionWindow = mfbPositionWindow;
                    103:     pScreen->ChangeWindowAttributes = mfbChangeWindowAttributes;
                    104:     pScreen->RealizeWindow = mfbMapWindow;
                    105:     pScreen->UnrealizeWindow = mfbUnmapWindow;
                    106: 
                    107:     pScreen->RealizeFont = mfbRealizeFont;
                    108:     pScreen->UnrealizeFont = mfbUnrealizeFont;
                    109:     pScreen->GetImage = mfbGetImage;
                    110:     pScreen->GetSpans = mfbGetSpans;
                    111:     pScreen->CreateGC = mfbCreateGC;
                    112:     pScreen->CreatePixmap = mfbCreatePixmap;
                    113:     pScreen->DestroyPixmap = mfbDestroyPixmap;
                    114:     pScreen->ValidateTree = miValidateTree;
                    115: 
                    116:     pScreen->InstallColormap = mfbInstallColormap;
                    117:     pScreen->UninstallColormap = mfbUninstallColormap;
                    118:     pScreen->ListInstalledColormaps = mfbListInstalledColormaps;
                    119:     pScreen->StoreColors = NoopDDA;
                    120: 
                    121:     pScreen->RegionCreate = miRegionCreate;
                    122:     pScreen->RegionCopy = miRegionCopy;
                    123:     pScreen->RegionDestroy = miRegionDestroy;
                    124:     pScreen->Intersect = miIntersect;
                    125:     pScreen->Inverse = miInverse;
                    126:     pScreen->Union = miUnion;
                    127:     pScreen->Subtract = miSubtract;
                    128:     pScreen->RegionReset = miRegionReset;
                    129:     pScreen->TranslateRegion = miTranslateRegion;
                    130:     pScreen->RectIn = miRectIn;
                    131:     pScreen->PointInRegion = miPointInRegion;
                    132:     pScreen->WindowExposures = miWindowExposures;
                    133:     pScreen->RegionNotEmpty = miRegionNotEmpty;
                    134:     pScreen->RegionEmpty = miRegionEmpty;
                    135:     pScreen->RegionExtents = miRegionExtents;
                    136: 
                    137:     pScreen->BlockHandler = NoopDDA;
                    138:     pScreen->WakeupHandler = NoopDDA;
                    139:     pScreen->blockData = (pointer)0;
                    140:     pScreen->wakeupData = (pointer)0;
                    141: 
                    142:     pVisual->vid = pScreen->rootVisual;
                    143:     pVisual->screen = index;
                    144:     pVisual->class = StaticGray;
                    145:     pVisual->redMask = 0;
                    146:     pVisual->greenMask = 0;
                    147:     pVisual->blueMask = 0;
                    148:     pVisual->bitsPerRGBValue = 1;
                    149:     pVisual->ColormapEntries = 2;
                    150: 
                    151:     pDepth->depth = 1;
                    152:     pDepth->numVids = 1;
                    153:     pDepth->vids = pVids = (long *) Xalloc(sizeof (long));
                    154:     pVids[0] = pScreen->rootVisual;    /* our one and only visual */
                    155:     AddResource(
                    156:        pScreen->rootVisual, RT_VISUALID, pVisual, mfbFreeVisual, RC_CORE);
                    157: 
                    158:     /* we MIGHT return 0 if we had been keeping track of potential
                    159:        allocation failures.  one day someone will clean this up.
                    160:     */
                    161:     return 1;
                    162: }
                    163: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.